【问题标题】:Dynamically adding properties to a dynamic object?动态地将属性添加到动态对象?
【发布时间】:2012-01-12 05:22:01
【问题描述】:

我有这个

dynamic d = new ExpandoObject();
d.Name = attribute.QualifiedName.Name;

所以,我知道 d 将有一个属性名称。现在,如果我在编译时不知道属性的名称,我如何将该属性添加到动态中。 我找到了这个SO Question

所以,调用绑定器等有一个复杂的概念。首先很难获得。有更简单的方法吗?

【问题讨论】:

标签: c# c#-4.0 dynamic expandoobject


【解决方案1】:
dynamic d = new ExpandoObject();
((IDictionary<string,object>)d)["test"] = 1;
//now you have d.test = 1

【讨论】:

    【解决方案2】:

    你也可以这样做:-

    Dictionary<string,object> coll = new Dictionary<string,object>();
        coll.Add("Prop1","hello");
        coll.Add("Prop2",1);
        System.Dynamic.ExpandoObject obj = dic.Expando();
    
    //You can have this ext method to better help
    
    public static ExpandoObject Expando(this IEnumerable<KeyValuePair<string, object>> 
    dictionary)
            {
                var expando = new ExpandoObject();
                var expandoDic = (IDictionary<string, object>)expando;
                foreach (var item in dictionary)
                {
                    expandoDic.Add(item);
                }
                return expando;
            }
    

    【讨论】:

      【解决方案3】:

      这是一种更清洁的方法

      var myObject = new ExpandoObject() as IDictionary&lt;string, Object&gt;; myObject.Add("Country", "Ireland");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-05
        • 2017-10-14
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多