我有一个如下所示的接口架构(C# .NET4)
interface A
{
}
interface B
{
List<A> a;
}
interface C
{
List<B> b;
}
我是这样实现的:
public interface A
{
}
public interface B<T> where T : A
{
List<T> a { get; set; }
}
public interface C<T> where T : B
{
List<T> b { get; set; } // << ERROR: Using the generic type 'B<T>' requires 1 type arguments
}
我不知道如何避免该错误使用泛型类型“B”需要 1 个类型参数
Since interface B<T>
是通用的,您需要在声明时为其提供正式的类型参数interface C<T>
。换句话说,当前的问题是你没有告诉编译器接口B接口C“继承”的是什么类型。
The two T
s 不一定指同一类型。它们可以是相同的类型,如
public interface C<T> where T : B<T>, A { ... }
或者它们可以是两种不同的类型:
public interface C<T, U> where T : B<U> where U : A { ... }
在第一种情况下,对类型参数的限制当然更严格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)