インターフェイスでのコンストラクター シグネチャの定義
C# では、インターフェイスは、クラスによって実装される必要があるコントラクトを定義する抽象データ型です。それを継承します。ただし、インターフェイスにはコンストラクターを含めることができないため、問題が生じる場合があります。
インターフェイスにコンストラクターがない理由
インターフェイスは、共通のメソッドとメソッドのセットを提供するように設計されています。クラスが実装する必要があるプロパティ。これらは具体的なオブジェクトを表すものではないため、インスタンス フィールドを初期化するためにコンストラクターを必要としません。代わりに、インターフェイスから継承するクラスは、必要なデータを初期化するために独自のコンストラクターを定義する必要があります。
コンストラクター署名の定義
コンストラクターを直接定義することはできません。インターフェイスの場合、静的インターフェイスを使用してコンストラクター署名のコントラクトを定義できます。静的インターフェイスはジェネリック型制約でのみ使用できますが、コンストラクターのパラメーターとアクセシビリティを指定できます。
例を次に示します。
public static interface IParameterlessConstructor { public IParameterlessConstructor(); }
このインターフェイスは、パラメータのないコンストラクタは、それを使用するクラスによって実装される必要があります。
コンストラクタの実装クラス
このインターフェイスから継承するクラスは、インターフェイスで定義された署名に従ってコンストラクターを実装する必要があります:
public class Foo : IParameterlessConstructor { public Foo() { /* Constructor implementation */ } }
結論
インターフェイス内でコンストラクターを直接定義することはできませんが、静的インターフェイスを使用してコンストラクター署名のコントラクトを定義できます。これにより、インターフェイスを実装するクラスは、指定されたパラメーターとアクセシビリティを備えたコンストラクターを提供する必要があります。
以上がC# インターフェイスでコンストラクターの署名を定義できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。