【发布时间】:2010-10-06 09:06:54
【问题描述】:
我正在开发一个应用程序,我需要调用一个泛型类的方法,而我并不关心实例的实际类型。类似于以下 Java 代码:
public class Item<T>{
private T item;
public doSomething(){...}
}
...
public void processItems(Item<?>[] items){
for(Item<?> item : items)
item.doSomething();
}
当时我很着急,所以我通过定义一个带有我需要调用的方法的接口并让泛型类实现它来解决我的问题。
public interface IItem
{
void doSomething();
}
public class Item<T> : IItem {
private T item;
public void doSomething(){...}
}
...
public void processItems(IItem[] items)
{
foreach(IItem item in items)
item.doSomething();
}
此解决方法效果很好,但我想知道实现相同行为的正确方法是什么。
编辑:
我忘了提到processItems 的调用者不知道实际类型。实际上这个想法是作为参数传递给processItems 的数组可以包含混合类型。由于在 .Net 中不可能有这样的数组,因此使用非泛型基类或接口似乎是唯一的方法。
【问题讨论】: