欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c# dynamic动态类型和匿名类

程序员文章站 2022-07-02 13:05:58
为表示对原作者的尊重,先贴出原文链接:https://www.cnblogs.com/hnsongbiao/p/8250956.html 以下是正文: dynamic类型简单示例 动态添加字段 List fieldList = new List() { "Name", ......

为表示对原作者的尊重,先贴出原文链接:

以下是正文:

 

dynamic类型
简单示例

dynamic expando = new system.dynamic.expandoobject(); //动态类型字段 可读可写
expando.id = 1;
expando.name = "test";
string json = utils.convertjson.jsonencode(expando);  //输出{id:1,name:'test'}

 动态添加字段

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"}; //匿名类字段只读不可写

dynamic aaaa = 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