c# – 如何使用FastMember获取动态对象的属性?
发布时间:2020-12-15 08:47:29 所属栏目:百科 来源:网络整理
导读:我有以下对象: dynamic person = new {Id = 1,Name = "SpiderMan"}; 我需要能够遍历属性名称,例如“Id”,“Name”. 我还需要能够以最有效的方式实现这一点,因此我选择使用FastMember,但它的api不允许我遍历属性. 有任何想法吗? [UPDATE] 感谢Marc,我成功实
我有以下对象:
dynamic person = new {Id = 1,Name = "SpiderMan"}; 我需要能够遍历属性名称,例如“Id”,“Name”. 我还需要能够以最有效的方式实现这一点,因此我选择使用FastMember,但它的api不允许我遍历属性. 有任何想法吗? [UPDATE] 感谢Marc,我成功实现了我想要的用途: dynamic person = new { Id = 1,Name = "SpiderMan" }; MemberSet members = TypeAccessor.Create(person.GetType()).GetMembers(); foreach (Member item in members) { // do whatever } 解决方法
对于您显示的场景,TypeAccessor.Create(obj.GetType())和GetMember()应该可以正常工作,因为该类型适用于反射.
在更一般的情况下:这是一个公平的问题 – 老实说,我不记得FastMember是否为真正的动态类型公开了这一点,但这里一个重要的考虑因素是,根据动态对象的本质,这组属性甚至可能无法枚举 – 即代码可以响应obj.Whatever正在运行,不知道提前做什么.然而,对于你实际拥有的物体,简单的反射是你最好的选择.您显示的方案不需要动态. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |