在Java中,我可以使用通配符「?」指定泛型。有可能創建一個這樣的地圖:關於C#中與泛型相比的泛型問題
Map<String, ?>
。我正在使用C#,我需要一個Dictionary<String, SomeInterface<?>>
(其中?可以是int,double,任何類型)。這在C#中可能嗎?
編輯:
實施例:
interface ISomeInterface<out T>{
T Method();
void methodII();
}
class ObjectI : ISomeInterface<int>{
...
}
class ObjectII : ISomeInterface<double>{
...
}
class ObjectIII : ISomeInterface<string>{
....
}
我試圖映射此對象插入字典等:實現ISomeInterface使用裝配在運行時被加載
Dictionary<String, ISomeInterface<?>> _objs = new Dictionary<String, ISomeInterface<?>();
_objs.Add("Object1", new ObjectI());
_objs.Add("Object2", new ObjectII());
_objs.Add("Object3", new ObjectII());
foreach(var keyVal in _objs){
Console.WriteLine(keyVal.Method());
}
對象和Activator.createInstance。在創建時,如果對象實現ISomeInterface<int>
或ISomeInterface<double>
,則不會。
任何幫助,非常感謝。
您想做什麼? – SLaks 2011-05-12 15:20:32
我不知道Java那麼多,但是不會''和'Object'一樣嗎? – 2011-05-12 15:22:34
是的,'?'是'Object'。更令人意想不到的是,你寫的任何東西實際上都是Object,因爲Java的虛擬機實際上並不支持泛型,所以它們在編譯時都會被擦除。 – Blindy 2011-05-12 15:24:08