これは非常に簡単な例です。この例ではMyProperty
インターフェイスのインターフェイスプロパティを実装する派生クラスの具象プロパティを許可しない理由は何ですか?
public interface IMyInterfaceProperty
{
}
public class MyProperty : IMyInterfaceProperty
{
}
public interface IMyInterface
{
IMyInterfaceProperty SomeProperty { get; set; }
}
public class MyClass : IMyInterface
{
public MyProperty SomeProperty { get; set; }
}
IMyInterfaceProperty
から誘導されるが、許可されていません。これをコンパイルできないという背後にある思考プロセスは何でしたか?
Program.MyClass
は、インターフェイスメンバProgram.IMyInterface.SomeProperty
を実装していません。は一致する戻り値の型がProgram.IMyInterfaceProperty
ではないため、Program.IMyInterface.SomeProperty
を実装できません。
質問がコンパイラエラーを含むように更新されました。 –
実装されるメソッドは、同じシグネチャと戻り値を持つ必要があります。異なる戻り値が必要な場合は、ジェネリックを使うことができます: 'T SomeProperty {get;セット; } ' –
これは、ASP.Net MVCに関連して、デフォルトのモデルバインダーは、値を設定するためのインターフェイスを作成できません(コンストラクタで、MVCに手動で具体的なクラスを設定する必要がありますクラスをインスタンス化してください)。 –