【发布时间】:2014-08-08 17:02:10
【问题描述】:
我目前对泛型有疑问。我想将现有的 java 代码转移到 c# 中。谁能告诉我,我如何在 c# 中进行以下操作?
例如,我有一个名为 module 的类,它有一个从 basicdata 继承的泛型参数。我想将这些对象中的许多添加到处理程序中,以便它们都可以在一个方法中更新。
在java中我有这样的东西:
public class BasicData
{
}
public abstract class Modul<T extends BasicData>
{
T value;
abstract void update(); // do something with the value
}
public class Handler
{
LinkedList<Modul<?>> modulCollection = new LinkedList<Data<?>>();
void add(Modul<?> m)
{
this.dataCollection.add(m);
}
void update(){
for(Modul<?> d : this.modulCollection){
d.update();
}
}
}
列表应该包含各种模块对象,其中值字段本身可以有各种类型,但它们都继承了 BasicData。 我搜索了一段时间,但我只找到了异国情调的解决方案。在c#中没有简单的方法可以做类似的事情吗?我不想重写我的整个设计。
起初我以为我可以在 c# 中声明这样的列表:
LinkedList<Modul<BasicData>> collection;
void add(Modul<BasicData> m)
{
this.dataCollection.add(m);
}
然后像这样添加各种对象:
class DataImpl : Modul<int>
{
}
handler.add(new DataImpl());
但我发现你不能施放这个 Modul。 有解决办法吗?
提前致谢, 米克
【问题讨论】:
-
能否请您显示演示“无法转换此模块”的代码?还要发布
BasicData和Modul<T>的 C# 定义,因为不清楚您尝试了什么。