2009-03-31 26 views
12

Có một cách nhanh chóng để chuyển đổi một từ điển Generic từ loại này sang loại khácChuyển đổi Generic điển để khác nhau loại

Tôi có điều này

IDictionary<string, string> _commands; 

và cần phải vượt qua nó để một chức năng mà phải mất một chút khác nhau gõ từ điển

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

Trả lời

19

Tôi cho rằng tôi sẽ viết

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

Không điều hiệu quả nhất trên thế giới để làm, nhưng cho đến khi hiệp phương sai là trong, đó là nghỉ giải lao.

+0

Phương pháp ToDictionary đòi hỏi 'sử dụng System.Linq;' (Tôi đã gãi đầu trong một hoặc hai phút). – danw

1

có lẽ chức năng này có thể hữu ích cho bạn

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

Và bạn sẽ gọi nó như vậy:

Handle(Convert(_commands)); 
0

có thể giống như thế này?

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

bạn không thể sử dụng

Dim myDictionary AS New Dictionary(Of Object, Object) 

này sau đó sẽ có thể chấp nhận bất kỳ loại

+0

Không, nó sẽ không hoạt động, bởi vì một từ điển không phải là một IDictionary ... – Eilistraee

Các vấn đề liên quan