2009-03-31 18 views
12

¿Hay una forma rápida de convertir un diccionario genérico de un tipo a otroConvertir diccionario genérico para diferentes tipos

tengo este

IDictionary<string, string> _commands; 

y la necesidad de pasarlo a una función que toma un poco Diccionario diferente mecanografiada

public void Handle(IDictionary<string, Object> _commands); 

Respuesta

19

supongo que iba a escribir

Handle(_commands.ToDictionary(p => p.Key, p => (object)p.Value)); 

no es lo más eficiente del mundo para hacerlo, pero hasta covarianza se encuentra, esa es la se rompe

+0

El método requiere ToDictionary 'usando System.Linq;' (Me estaba rascando la cabeza por un minuto o dos). – danw

1

tal vez esta función puede ser útil para usted

IEnumerable<KeyValuePair<string, object>> Convert(IDictionary<string, string> dic) { 
    foreach(var item in dic) { 
     yield return new KeyValuePair<string, object>(item.Key, item.Value); 
    } 
} 

Y se llaman así:

Handle(Convert(_commands)); 
0

podría algo como esto?

Dictionary<int, string> dict = new Dictionary<int, string>(); 

dict.Add(1, "One"); 
dict.Add(2, "Two"); 
dict.Add(3, "Three"); 
dict.Add(4, "Four"); 
dict.Add(5, "Five"); 

object dictObj = (object)dict; 

IDictionary temp = (IDictionary)dictObj; 

Dictionary<int, object> objs = new Dictionary<int, object>(); 

foreach (DictionaryEntry de in temp) 
{ 
    objs.Add((int)de.Key, (object)de.Value); 
} 
0

no puede usted utilizar

Dim myDictionary AS New Dictionary(Of Object, Object) 

Este sería entonces capaz de aceptar cualquier tipo

+0

No, no funcionará, porque un Diccionario no es IDiccionario ... – Eilistraee

Cuestiones relacionadas