【问题标题】: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<string, Object>;
myObject.Add("Country", "Ireland");