码迷,mamicode.com
首页 > Windows程序 > 详细

c# dynamic动态类型和匿名类(转)

时间:2015-12-24 11:59:56      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

简单示例

dynamic expando = new System.Dynamic.ExpandoObject(); //动态类型字段 可读可写
expando.Id = 1;
expando.Name = "Test";
string json = Utils.ConvertJson.JsonEncode(expando); //输出{Id:1,Name:‘Test‘}

//动态添加字段

List<string> fieldList = new List<string>() { "Name","Age","Sex"}; //From config or db

dynamic dobj = new System.Dynamic.ExpandoObject();

var dic = (IDictionary<string, object>)dobj;
foreach (var fieldItem in fieldList)
{
  dic[fieldItem] = "set "+fieldItem+" value"; /*实现类似js里的 动态添加属性的功能

var obj={};
var field="Id";

eval("obj."+field+"=1");

alert(obj.Id); //1 */


}
var val = dobj.Name; //“set Name value”

var val1=dobj.Age;//”set Age value“

枚举该对象所有成员

foreach (var fieldItem in (IDictionary<String, Object>)dobj)
{
  var v = (fieldItem.Key + ": " + fieldItem.Value);
}

匿名类

//var aaaa = new {Id=1,Name="Test"}; //匿名类字段只读不可写

dynamicaaaa = new {Id=1,Name="Test"}; //匿名类字段只读不可写
aaaa.Id = 2; //不可写 报错无法为属性或索引器“<>f__AnonymousType1<int>.Id”赋值 - 它是只读的

dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject("{Name:‘aa‘,Sex:‘Male‘,Age:11}");
var name = obj.Name.Value; //aa

 

c# dynamic动态类型和匿名类(转)

标签:

原文地址:http://www.cnblogs.com/laotouzi/p/5072551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!