c# 匿名对象增加动态属性
在开发过程中碰到了一个需求,需要动态创建对象及其动态属性。在尝试几种方法后,最后完成了需求,记录下过程,给园友参考下
1.动态创建对象一:匿名对象
object obj1 = new {Name = "金朝钱",Age="31",Birthday =DateTime.Now};
创建的匿名对象:
问题1:无法动态映射对象属性
解决:使用反射的方式获取对象值
object obj1 = new {Name = "金朝钱",Age="31",Birthday =DateTime.Now}; Response.Write(string.Format("Name:{0}", obj1.GetType().GetProperty("Name").GetValue(obj1, null).ToString()));
输出结果
问题2:无法动态创建对象属性
2.使用动态对象创建方法二、动态对象
dynamic obj2 = new System.Dynamic.ExpandoObject(); obj2.Name = "金朝钱"; obj2.Age = 31; obj2.Birthday = DateTime.Now; Response.Write(string.Format("Name:{0}", obj2.Name));
创建的动态对象:
输出结果:
问题:还是不能动态增加对象
3.动态创建对象及其属性
查看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()));
对象查看:
输出:
输出是发生错误,不能用反射获取对象属性,经查,该对象的Field和Property全部都是null,那么我们和上面一样使用Dictionary进行输出
终于搞定收工,有类似需要的朋友可以参考下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构