星空网 > 软件开发 > ASP.net

c# 匿名对象增加动态属性

在开发过程中碰到了一个需求,需要动态创建对象及其动态属性。在尝试几种方法后,最后完成了需求,记录下过程,给园友参考下

1.动态创建对象一:匿名对象

object obj1 = new {Name = "金朝钱",Age="31",Birthday =DateTime.Now};

创建的匿名对象:

c#  匿名对象增加动态属性

问题1:无法动态映射对象属性

 c#  匿名对象增加动态属性

解决:使用反射的方式获取对象值

object obj1 = new {Name = "金朝钱",Age="31",Birthday =DateTime.Now};Response.Write(string.Format("Name:{0}", obj1.GetType().GetProperty("Name").GetValue(obj1, null).ToString()));

输出结果

c#  匿名对象增加动态属性

问题2:无法动态创建对象属性

c#  匿名对象增加动态属性

 

2.使用动态对象创建方法二、动态对象 

dynamic obj2 = new System.Dynamic.ExpandoObject();obj2.Name = "金朝钱";obj2.Age = 31;obj2.Birthday = DateTime.Now;Response.Write(string.Format("Name:{0}", obj2.Name));

 创建的动态对象:

c#  匿名对象增加动态属性

输出结果:

c#  匿名对象增加动态属性

问题:还是不能动态增加对象

 

3.动态创建对象及其属性

c#  匿名对象增加动态属性

查看ExpandoObject的定义,发现其实质是一个Dictionary存放键值对,是否可以通过该方法来动态处理对象属性呢?

 

Dictionary<string, object> temp = new Dictionary<string, object>();temp.Add("Name", "金朝钱");temp["Age"] = 31;temp["Birthday"] = DateTime.Now;dynamic obj = new System.Dynamic.ExpandoObject();foreach (KeyValuePair<string, object> item in temp){((IDictionary<string, object>)obj).Add(item.Key, item.Value);}Response.Write(string.Format("Name:{0}", obj.GetType().GetProperty("name").GetValue(obj, null).ToString()));

 

 对象查看:

c#  匿名对象增加动态属性

输出:

 c#  匿名对象增加动态属性

输出是发生错误,不能用反射获取对象属性,经查,该对象的Field和Property全部都是null,那么我们和上面一样使用Dictionary进行输出

c#  匿名对象增加动态属性

 

终于搞定收工,有类似需要的朋友可以参考下。

 




原标题:c# 匿名对象增加动态属性

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Shopify邮件营销:如何增加邮件订阅用户数?给你支8招!:https://www.ikjzd.com/articles/120739
注册国际商标流程6大要 你清楚了吗:https://www.ikjzd.com/articles/12074
跨境微观:9大站点FBA物流时效揭露未来推广方向:https://www.ikjzd.com/articles/120741
速卖通运营常见问题解答:https://www.ikjzd.com/articles/120742
跨境早报丨亚马逊暂停在法销售非必需品:https://www.ikjzd.com/articles/120743
Google推出免费产品列表,要开始和亚马逊抢客户了?:https://www.ikjzd.com/articles/120744
皇帝的皇宫=:https://www.vstour.cn/a/363188.html
海南岛琼海市旅游景点 琼海市的旅游景点:https://www.vstour.cn/a/363189.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流