将通用字典转换为不同的类型

有没有一种快速的方法将通用字典从一种类型转换为另一种类型

我有这个

IDictionary _commands; 

并且需要将它传递给一个带有稍微不同的类型字典的函数

 public void Handle(IDictionary _commands); 

我想我会写

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

这不是世界上最有效的事情,但在协方差出现之前,这就是rest时间。

也许这个function对你有用

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

你会这样称呼它:

 Handle(Convert(_commands)); 

这可能是这样的吗?

 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); } 

你不能用

 Dim myDictionary AS New Dictionary(Of Object, Object) 

然后,这将能够接受任何类型