c# dynamic动态类型和匿名类

dynamic类型
简单示例

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

动态添加字段

复制代码

  1. List<string> fieldList = new List<string>() { "Name","Age","Sex"}; //From config or db
  2. dynamic dobj = new System.Dynamic.ExpandoObject();
  3. var dic = (IDictionary<string, object>)dobj;
  4. foreach (var fieldItem in fieldList)
  5. {
  6.   dic[fieldItem] = "set "+fieldItem+" value";
  7. /*实现类似js里的 动态添加属性的功能
  8. var obj={};
  9. var field="Id";
  10. eval("obj."+field+"=1");
  11. alert(obj.Id); //1
  12. */
  13. }
  14. var val = dobj.Name; //“set Name value”
  15. var val1=dobj.Age;//”set Age value“

复制代码

枚举该对象所有成员

复制代码

  1. foreach (var fieldItem in (IDictionary<String, Object>)dobj)
  2. {
  3.   var v = (fieldItem.Key + ": " + fieldItem.Value);
  4. }
  5. 匿名类
  6. //var aaaa = new {Id=1,Name="Test"}; //匿名类字段只读不可写
  7. dynamic aaaa = new {Id=1,Name="Test"}; //匿名类字段只读不可写
  8. aaaa.Id = 2; //不可写 报错无法为属性或索引器“<>f__AnonymousType1<int>.Id”赋值 - 它是只读的
  9. dynamic obj = Newtonsoft.Json.JsonConvert.DeserializeObject("{Name:'aa',Sex:'Male',Age:11}");
  10. var name = obj.Name.Value; //aa

转载:https://www.cnblogs.com/hnsongbiao/p/8250956.html

转载于:https://www.cnblogs.com/chenbingquan/p/11081262.html

发表评论

表情:
评论列表 (有 0 条评论,59人围观)

还没有评论,来说两句吧...

相关阅读

    相关 内部匿名内部

    一.内部类 1.什么是内部类? 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类 2.成员内部类 (1)成员内部类:定义在类中方法

    相关 Java 匿名内部匿名对象

    匿名内部类:没有类名的类就称作为匿名内部类。 匿名内部类的好处:简化书写。 匿名内部类的使用前提:必须存在继承或者实现关系才能使用。 匿名内部类一般是用于实参。

    相关 JAVA 内部匿名

    该片仅为JAVA笔记,没有补充具体实现的代码,可以参阅 [Java内部类和匿名内部类的用法][Java],该篇博客对JAVA内部类和匿名类的讲解更加详细。 内部类的访问规

    相关 C#dynamic 类型

    在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查,改为在运行时解析这些操作。dynamic 类型简化了对 COM API(例如 Office Auto

    相关 匿名类型

    匿名类型就是没有名字的类型。在C\3.0中允许我们在程序中声明一个临时的类型来存储数据。匿名类型的对象是必须用var 来声明,但是用var 声明的对象不一定都是匿名对象 匿名