C#实现动态属性2,超简单

    上一篇文章《C#实现动态属性》讲述了在代码层面模拟动态属性,实现后发现根本不能满足动态加载导入的Excel中不固定列数的需求,也给大家留了个疑问。那么今天用更简单的方法来实现,从而满足昨天那个需求。直接上代码

static void Main(string[] args)
{
    List<dynamic> dynamics = new List<dynamic>();
      dynamic obj = new ExpandoObject();
    ((IDictionary<string, object>)obj).Add("Name", "张三");
    ((IDictionary<string, object>)obj).Add("Age", "22");
    ((IDictionary<string, object>)obj).Add("Sex", "男");
     // Console.WriteLine(obj.Name); 这个地方不行,必须放到集合里
    dynamic obj2 = new ExpandoObject();
    ((IDictionary<string, object>)obj2).Add("Name", "李四");
    ((IDictionary<string, object>)obj2).Add("Age", "21");
    ((IDictionary<string, object>)obj2).Add("Sex", "女");
    dynamics.Add(obj);
    dynamics.Add(obj2);
      foreach (var item in dynamics)
    {
        Console.WriteLine(item.Name);
    }
    //这里可以转换成json输出
     string paramsText = JsonConvert.SerializeObject(dynamics);
}  
//输出结果:张三,李四

    本实例也是使用了dynamic 特性的ExpandoObject 类。ExpandoObject类的微软官方介绍为:表示可在运行时动态添加和删除其成员的对象。ExpandoObject 类实现 IDictionary<String, Object> 接口。这样,就可以在运行时向类实例 ExpandoObject 添加成员的枚举。如果在编译时不知道实例可能具有的成员。本例就是使用这个原理。但是没有转为集合时不能像属性那样使用,必须添加到dynamic的list集合中才能像属性那样使用。

    这个方法完全满足昨天的需求,读取的数据可以通过Excle列的个数循环动态添加属性和属性值。这样的话就可以序列化输出到前端使用。

结语

    本文讲述了C#实现动态属性的第二种方式,根据输入字段进行属性动态化。希望本文对你有所收获,同时欢迎留言和提出异议。

参考:微软文档

版权声明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。

技术群:添加小编微信并备注进群
小编微信:mm1552923   公众号:dotNet编程大全
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值