我的目标如下:
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
}发布于 2015-08-27 22:16:23
对于您所展示的场景,TypeAccessor.Create(obj.GetType())和GetMember()应该工作得很好,因为这种类型可以进行反射。
在更一般的情况下:这是一个公平的问题--我真的不记得FastMember是否公开了真正的动态类型,但是这里的一个重要考虑因素是,根据动态对象的本质,这组属性甚至可能是不可枚举的--也就是说,代码可以动态响应obj.Whatever,而事先不知道Whatever。然而,对于你实际拥有的对象,简单的反射是你最好的选择。您显示的场景不需要dynamic。
https://stackoverflow.com/questions/32260017
复制相似问题