C# 如何使用FastMember获取动态对象的属性?
我的目标如下:C# 如何使用FastMember获取动态对象的属性?,c#,dynamic,fastmember,C#,Dynamic,Fastmember,我的目标如下: dynamic person = new {Id = 1, Name = "SpiderMan"}; 我需要能够遍历属性名称,例如“Id”,“Name” 我还需要能够以最有效的方式实现这一点,因此我选择使用它,但是它的api不允许我遍历属性 有什么想法吗 [更新] 多亏了Marc,我成功地实现了我想要的: dynamic person = new { Id = 1, Name = "SpiderMan" }; MemberSet members = TypeAccessor.C
dynamic person = new {Id = 1, Name = "SpiderMan"};
我需要能够遍历属性名称,例如“Id”
,“Name”
我还需要能够以最有效的方式实现这一点,因此我选择使用它,但是它的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.无论什么
,事先不知道任何事情。但是,对于实际拥有的对象,简单反射是最佳选择。您显示的场景不需要dynamic
Tnx-Marc,GetMembers()
非常适合我的场景。有没有计划将源代码从Google代码迁移到GitHub?再次感谢tnx为这个辉煌的图书馆。