В Java я могу указать generic с подстановочным знаком "?". Можно создать такую карту, как этот:
Map<String, ?>
.
Я работаю с С#, и мне нужен Dictionary<String, SomeInterface<?>>
(где? может быть int, double, any type). Возможно ли это в С#?
EDIT:
Пример:
interface ISomeInterface<out T>{
T Method();
void methodII();
}
class ObjectI : ISomeInterface<int>{
...
}
class ObjectII : ISomeInterface<double>{
...
}
class ObjectIII : ISomeInterface<string>{
....
}
Я пытался сопоставить эти объекты в словаре вроде:
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());
}
Объекты, которые реализуют ISomeInterface, загружаются во время выполнения с помощью Assembly и Activator.createInstance. В момент создания я не делаю, если объекты реализуют ISomeInterface<int>
или ISomeInterface<double>
.
Любая помощь очень ценится.