【发布时间】:2012-09-11 18:30:09
【问题描述】:
我有以下课程
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>“实现”的空虚拟接口。有没有更优雅的方式?
【问题讨论】:
标签: c# .net mono derived-class generic-type-argument