У меня есть следующая проблема:Список различных родовых типов, динамическое литье
- Мне нужно хранить общие объекты с различными параметрами типа, что-то вроде javish
Sth<A,?>
, - «?» типы, как правило, примитивы, так что на самом деле не расширяемая/изменчива
- Мне нужно выполнить некоторые методы по каждому элементу моего списка
- различные методы для различных типов или, по крайней мере, различные перегрузки этих методов
Хотя я не знаю, как хранить такие типы, допустим, для простоты List<object>
.
Я мог бы хранить тип в вопросе где-нибудь (List<KeyValuePair<Type,object>>
), получая его с typeof()
, но тогда, как я могу вернуть объект обратно в требуемый тип? Что-то вроде
foreach(var entry in myList)
{
var obj = (Sth<A, entry.Key>) entry.Value;
myMethod(obj); //This can have overloads for object, Sth<A,int>, Sth<A,string>,
// etc. Generally, I need a correct type of obj here.
}
Конечно myMethod<T>
общего метод, библиотеки слишком много перегрузок, чтобы если-иначе он с obj is Sth<A, uint>
...
Я думаю, что я мог бы создать новый объект на основе entry.Key
, а затем заполнить
Возможны ли такие комбинации с типами?
Я считаю, что ответ заключается в правильном создании myList
, но я не знаю, как это сделать.
Любая помощь будет оценена!
С Рождеством :)
Что делает 'myMethod'? В какой-то момент вам не придется бросать объект в нечто значимое, чтобы использовать его? –
Ну, этот 'myMethod' на самом деле не мой;] Проблема в том, что я не знаю источников и не могу сказать, какие типы важны. –