Convertir un dictionnaire générique en un type différent

Existe-t-il un moyen rapide de convertir un dictionnaire générique d’un type à un autre

J’ai ceci

IDictionary _commands; 

et besoin de passer à une fonction qui prend un dictionnaire typé légèrement différent

 public void Handle(IDictionary _commands); 

Je suppose que j’écrirais

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

Ce n’est pas la chose la plus efficace au monde à faire, mais jusqu’à ce que la covariance soit en place, c’est la pause.

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

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

Et vous l’appellerez ainsi:

 Handle(Convert(_commands)); 

Quelque chose comme ça pourrait faire?

 Dictionary dict = new Dictionary(); 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 objs = new Dictionary(); foreach (DictionaryEntry de in temp) { objs.Add((int)de.Key, (object)de.Value); } 

Tu ne peux pas utiliser

 Dim myDictionary AS New Dictionary(Of Object, Object) 

Ce serait alors en mesure d’accepter tous les types