首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FastMember获取动态对象的属性?

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

Stack Overflow用户
提问于 2015-08-27 21:49:17
回答 1查看 5.6K关注 0票数 10

我的目标如下:

代码语言:javascript
复制
dynamic person = new {Id = 1, Name = "SpiderMan"};

我需要能够遍历属性名,例如"Id""Name"

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

有什么想法吗?

更新

多亏了Marc,我才成功地实现了我想要的目标:

代码语言:javascript
复制
dynamic person = new { Id = 1, Name = "SpiderMan" };
MemberSet members = TypeAccessor.Create(person.GetType()).GetMembers();
foreach (Member item in members)
{
    // do whatever
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 22:16:23

对于您所展示的场景,TypeAccessor.Create(obj.GetType())GetMember()应该工作得很好,因为这种类型可以进行反射。

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

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32260017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档