Преобразователь типов объектов для различных аргументированных типов

Скажем, у меня есть два словаря:

Dim dict1 as new dictionary(Of Integer, String)
Dim dict2 as new dictioanry(Of customType, customtype2)

Я хочу преобразовать их в список в методе и вернуть список аргументированного типа значения словаря. Так....

Public Function DictToListConverter(ByVal argDict as Dictionary(Of Object, Object), ByVal argType as Type) **What goes here.

Я знаю, что могу просто вернуть функцию вызова, но это не лучшее решение. Я не хотел бы возвращать пользовательский класс, содержащий значения. Другими словами, я ищу способ сделать следующее:

Передайте словарь (целое число, строка) и получите возврат списка (из строки)

в то же время, если я передаю словарь (из String, Boolean), функция должна возвращать список (из Boolean)

Похоже, это невозможно, и мне либо нужно использовать класс/структуру, либо просто привести объект в вызывающую процедуру. Просто хотел получить подтверждение того, возможен ли этот запрос.

Еще раз спасибо!


person Sean Hobbs    schedule 21.02.2013    source источник


Ответы (2)


Предполагая, что вы используете .Net 3.5 или более позднюю версию, вы можете сделать это с помощью следующего...

Public Function DictToListConverter(Of TKey, T)(dict As Dictionary(Of TKey, T)) As List(Of T)
    Return dict.Select(Function(i As KeyValuePair(Of TKey, T)) i.Value).ToList()
End Function
person MHollis    schedule 21.02.2013

Вам нужно использовать List(Of Object) или ArrayList, что более или менее одинаково.

person SysDragon    schedule 21.02.2013