Convert Generic Dictionary to different type

后端 未结 4 419
無奈伤痛
無奈伤痛 2021-01-17 13:02

Is there a quick way to convert a Generic Dictionary from one type to another

I have this

IDictionary _commands;
相关标签:
4条回答
  • I suppose I would write

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

    Not the most efficient thing in the world to do, but until covariance is in, that's the breaks.

    0 讨论(0)
  • 2021-01-17 13:40

    maybe this function can be useful for you

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

    And you will call it like so:

    Handle(Convert(_commands));
    
    0 讨论(0)
  • 2021-01-17 13:51

    Can't you use

    Dim myDictionary AS New Dictionary(Of Object, Object)
    

    This would then be able to accept any types

    0 讨论(0)
  • 2021-01-17 13:52

    could something like this do?

    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 讨论(0)
提交回复
热议问题