我正在開發一個應用程序,我需要調用泛型類的方法,而且我不關心實例的實際類型。類似下面的Java代碼:什麼是C#泛型中的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中不可能有這樣的數組,因此使用非泛型基類或接口似乎是唯一的方法。
Blargh,幾秒鐘過早。 :P – 2009-02-09 11:25:53