我有以下类结构:
public class A : AInterface { }
public interface AInterface { }
public class B<T> : BInterface<T> where T : AInterface
{
public T Element { get; set; }
}
public interface BInterface<T> where T : AInterface
{
T Element { get; set; }
}
public class Y : B<A> { }
public class Z<T> where T : BInterface<AInterface> {}
public class Test
{
public Test()
{
Z<Y> z = new Z<Y>();
}
}
这给了我在 C# 4.0 中的以下编译错误。类型“Test.Y”不能用作泛型类型或方法“Test.Z”中的类型参数“T”。没有从“Test.Y”到“Test.BInterface”的隐式引用转换。
我虽然泛型中的协方差应该使这项工作?任何帮助将不胜感激。