2009-03-31 5 views
12

Y at-il un moyen rapide de convertir un dictionnaire générique d'un type à l'autreConvertir générique Dictionnaire type différent

Je cette

IDictionary<string, string> _commands; 

et la nécessité de passer à une fonction qui prend un peu différent Dictionnaire typé

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

Répondre

19

Je suppose que j'écrirais

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

pas la chose la plus efficace dans le monde à faire, mais jusqu'à ce que covariance est, c'est la pauses.

+0

La méthode nécessite ToDictionary 'en utilisant System.Linq;' (Je me grattais la tête pendant une minute ou deux). – danw

1

peut-être cette fonction peut être utile pour vous

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

Et vous appeler comme ceci:

Handle(Convert(_commands)); 
0

Quelque chose comme ceci pourrait-il faire?

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

Tu ne peux pas utiliser

Dim myDictionary AS New Dictionary(Of Object, Object) 

Ce serait alors en mesure d'accepter tous les types

+0

Non, cela ne fonctionnera pas, car un Dictionary n'est pas un IDictionary ... – Eilistraee

Questions connexes