如果我有这个代码:
public interface IThing<T> where T : class
{
// ...
}
public class BaseThing<T> : IThing<T> where T : class
{
// ...
}
public class ThingA : BaseThing<string>
{
// ...
}
public class ThingB : BaseThing<Uri>
{
// ...
}
此代码失败:
List<IThing<object>> thingList = new List<IThing<object>>();
thingList.Add(new ThingA());
thingList.Add(new ThingB());
即使ThingA
(间接)继承自(并且应该是的实例)IThing<T>
。为什么?是ThingA
/ThingB
不是 的实例IThing<T>
?