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

时间:2015-08-27 21:49:17

标签: c# dynamic fastmember

我有以下对象:

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
}

1 个答案:

答案 0 :(得分:6)

对于您显示的方案,TypeAccessor.Create(obj.GetType())GetMember()应该可以正常工作,因为该类型适用于反射。

在更一般的情况下:这是一个公平的问题 - 老实说,我不记得FastMember是否为真正的动态类型公开了这一点,但这里一个重要的考虑因素是,根据动态对象的本质,属性甚至可以枚举 - 即代码可以在不知道obj.Whatever的情况下动态响应Whatever。然而,对于你实际拥有的物体,简单的反射是你最好的选择。您显示的方案不需要dynamic