我有以下类的层次结构。
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上的编译失败。