在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