gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:35:11 27 4
gpt4 key购买 nike

我有以下对象:

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

关于c# - 如何使用 FastMember 获取动态对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32260017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com