2009-03-31 18 views
12

C'è un modo rapido per convertire un dizionario generico da un tipo all'altroConvertire dizionario generico a diversi tipi

ho questo

IDictionary<string, string> _commands; 

e la necessità di passare a una funzione che prende un po ' diverso dizionario digitato

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

risposta

19

suppongo che avrei scritto

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

Non è la cosa più efficiente al mondo a fare, ma fino a quando la covarianza è, questa è la pause.

+0

Il metodo richiede ToDictionary 'utilizzando System.Linq;' (Mi stavo grattando la testa per un minuto o due). – danw

1

forse questa funzione può essere utile per voi

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

E si chiamerà in questo modo:

Handle(Convert(_commands)); 
0

potrebbe fare qualcosa del genere?

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

non è possibile utilizzare

Dim myDictionary AS New Dictionary(Of Object, Object) 

Questo sarebbe quindi in grado di accettare qualsiasi tipo

+0

No, non funzionerà, perché un dizionario non è un IDictionary ... – Eilistraee