我有以下定义:
public class cell : DynamicObject {
}
[DataContract]
public class rows {
[DataMember]
public List<cell> rows;
}
稍后在代码中我做了:
dynamic dtCell = new cell();
我需要每次都能创建不同名称的属性。所以我能够得到json:
{ color: 'red', category: 'car'} or { country: 'US', city: 'Tampa', county: '...', ... }
如何为动态对象创建属性,就像在javascript或类似内容中向字典添加属性一样。
我试过:dtCell.GetType().GetProperty('city')
正如我在几个帖子中找到的那样,对象返回的是null
。
当我这样做时:
dtCell.GetType().GetProperty('city').SetValue(dtCell, 'Tampa', null)
我得到例外:dtCell.GetType().GetProperty("CustomerId").SetValue(dtCell, 3, null)' threw an exception of type 'System.Reflection.TargetInvocationException' dynamic {System.Reflection.TargetInvocationException}
帮助表示赞赏!!!
答案 0 :(得分:2)
您可以使用Dictionary来代替DynamicObject。例如,
Dictionary<string, string> dict = new Dictionary<string, string>()
{
{"country","US"}, {"city","Tampa"}, {"county","..."}
};
var json = new JavaScriptSerializer().Serialize(dict);
会给{"country":"US","city":"Tampa","county":"..."}
也可以使用匿名类
var obj = new { color = "red", category = "car" };
var json2 = new JavaScriptSerializer().Serialize(obj);