我在使用泛型设置继承时遇到问题。
本质上,我想做的是拥有一个本身接受接口的通用接口。棘手的部分是“内部”界面可能有一个更具体的界面分层。
这是我正在尝试构建的结构的代表性示例:
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>'
. 存在显式转换(您是否缺少演员表?)
我做错了什么,有没有办法正确地做到这一点?