如何使用FastMember获取动态对象的属性?

玛雅

我有以下对象:

dynamic person = new {Id = 1, Name = "SpiderMan"};

我需要通过属性名称例如能够迭代"Id""Name"

我还需要能够以最有效的方式实现这一目标,因此我选择使用FastMember,但是它的api不允许我遍历属性。

有任何想法吗?

[更新]

多亏了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在不Whatever事先知道的情况下即时响应但是,对于您实际拥有的对象,简单的反射是最好的选择。您显示的方案不需要dynamic

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章