mat*_*mat 6 .net c# mono derived-class generic-type-argument
我有以下课程
public class A<T>
{
}
public class B<T> : A<T>
{
}
public class C1 : B<string>
{
}
public class C2 : B<int>
{
}
Run Code Online (Sandbox Code Playgroud)
我想要的是,有一个方法可以采取任何类派生B<T>,喜欢C1或C2作为参数.但是声明一种方法
public void MyMethod(B<T> x)
Run Code Online (Sandbox Code Playgroud)
不起作用,它会产生编译器错误
错误CS0246:找不到类型或命名空间名称"T".您是否缺少using指令或程序集引用?(CS0246)
我很困在这里.创建一个非泛型的基类B<T>将不起作用,因为我无法从A<T>那种方式派生.我能想到的唯一(丑陋)解决方案是定义一个由"实现"的空虚拟接口B<T>.有更优雅的方式吗?
Ada*_*dam 10
使用通用方法:
public void MyMethod<T> (B<T> x)
Run Code Online (Sandbox Code Playgroud)
你可以像这样称呼它:
MyMethod(new B<string>());
MyMethod(new C1());
MyMethod(new C2());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |