我有以下课程
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
我想要做的是有一个方法,它可以将任何类派生自B<T>
,喜欢C1
或C2
作为参数。但是将方法声明为
public void MyMethod(B<T> x)
不起作用,它会产生编译器错误
错误 CS0246:找不到类型或命名空间名称“T”。您是否缺少 using 指令或程序集引用?(CS0246)
我被困在这里了。创建一个非泛型基类是B<T>
行不通的,因为我无法从A<T>
这种方式派生。我能想到的唯一(丑陋的)解决方案是定义一个空的虚拟接口,由B<T>
. 有没有更优雅的方式?