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