Key value pairs in C# Params

前端 未结 8 2418
后悔当初
后悔当初 2021-02-11 14:55

I\'m looking for a way to have a function such as:

myFunction({\"Key\", value}, {\"Key2\", value});

I\'m sure there\'s something with anonymous

8条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-02-11 15:41

    Funny, I just created (minutes ago) a method that allows to do that, using anonymous types and reflection :

    MyMethod(new { Key1 = "value1", Key2 = "value2" });
    
    
    public void MyMethod(object keyValuePairs)
    {
        var dic = DictionaryFromAnonymousObject(keyValuePairs);
        // Do something with the dictionary
    }
    
    public static IDictionary DictionaryFromAnonymousObject(object o)
    {
        IDictionary dic = new Dictionary();
        var properties = o.GetType().GetProperties();
        foreach (PropertyInfo prop in properties)
        {
            dic.Add(prop.Name, prop.GetValue(o, null) as string);
        }
        return dic;
    }
    

提交回复
热议问题