C#类型D必须可转换为A <c,i <t1>&gt;为了在通用类型或方法B <t1,t2>中将其用作参数T2

时间:2016-10-08 10:22:34

标签: c# generics unity3d

我有以下类的层次结构。

interface I<T> { }

abstract class A<T1, T2> { }

class B<T1, T2>
    where T2 : A<T1, I<T1>>
{ }

class C { }

class D : A<C, I<C>> { }

class E : B<C, D> { }

编译器说“The type D must be convertible to A<C, I<T1>> in order to use it as parameter T2 in the generic type or method B<T1,T2>”。为什么当D打算转换为A<C, I<T1>>时,他希望D可转换为A<C, I<C>>?在这种情况下,我认为编译器应该用C代替T1。

编辑:Unity的Mono编译器(Mono 4.4),.NET 3.5上的编译失败。

0 个答案:

没有答案