zoukankan      html  css  js  c++  java
  • c# dynamic动态类型和匿名类(转)

    简单示例
    
    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
  • 相关阅读:
    luogu P1075 质因数分解
    luogu P1146 硬币翻转
    [HEOI2013]SAO
    [HAOI2010]软件安装
    [CodeForces-763C]Timofey and remoduling
    [CodeForces-375E]Red and Black Tree
    [CodeForces-178F]Representative Sampling
    [CodeForces-55D]Beautiful Numbers
    [AHOI2009]同类分布
    [ZJOI2010]数字计数
  • 原文地址:https://www.cnblogs.com/laotouzi/p/5072551.html
Copyright © 2011-2022 走看看