ジェネリックを使用した継承の設定に問題があります。
本質的に、私がやりたいことは、それ自体がインターフェースを受け入れる汎用インターフェースを持つことです。トリッキーな部分は、「内部」インターフェースが、その上にレイヤー化されたより具体的なインターフェースを持つことができるということです。
これは、私が構築しようとしている構造の代表的なサンプルです。
public interface IThing { }
public interface IMoreSpecificThing : IThing { }
public interface IWidget<T> where T : IThing { }
public class MySpecificThing : IMoreSpecificThing { }
public class MyWidget : IWidget<MySpecificThing> { }
public class MyClass
{
public IWidget<IThing> MyProperty { get; set; }
public MyClass()
{
MyProperty = new MyWidget();
}
}
問題は、MyWidget を MyProperty に割り当てると、次のエラーが表示されることです。
'MyWidget'
タイプを に暗黙的に変換することはできません'IWidget<IThing>'
。明示的な変換が存在します (キャストがありませんか?)
これを正しく行う方法はありますか?