- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下对象:
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/
当使用 TypeAccessor.Create FastMember 时,似乎总是返回按字母排序的列列表。是否可以告诉它保留类中列的顺序? 例如: var testClass = new { B =
我需要提取所有不可枚举的公共(public)读写属性,除非它们是字符串。目前这是通过反射完成的,想知道这是否可以用 FastMember 完成. 我尝试了类似下面的代码,但它没有达到我想要的效果。我可
(这是通过 Twitter 上的一个问题,经许可在此处重新提问) 我正在尝试快速验证某些对象(以测试空值),我认为 FastMember 可能会有所帮助 - 但是,通过下面显示的测试,我发现性能要差得
当我尝试使用 FastMember 设置嵌套成员属性时出现异常。例如当有这些类(class)时 public class A { public B First { get; set; } }
我有以下对象: dynamic person = new {Id = 1, Name = "SpiderMan"}; 我需要能够遍历属性名称,例如“Id”,“Name”。 我还需要能够以最有效的方式实
我想用 FastMember ( https://www.nuget.org/packages/FastMember/ ) 替换我的反射索引访问器,但偶然发现了以下问题。 我有以下设置: class
我从一个我无法控制的库返回一个接口(interface): public interface IA : IB { String A { get;} } public interface IB { St
我不确定它是否受支持,但我试图让 fastmember 为我提供动态 ExpandoObject 的类型信息(使用下面的代码),但我收到错误: System.NotSupportedException
我有一个 C# .NET Core 2.0 Web API 项目(作为微服务实现)。 我在我的存储库层中使用 NuGet 包“Dapper”和“FastMember”(最新版本)来尝试转换 IEnum
我正在使用 FastMember转换 List到 Datatable .一些类包含枚举,这在将数据表作为 TVP 传递给存储过程时会导致问题。 public class MyObject {
我编写了一个方法,使用 FastMember 将通用列表转换为数据表来自 NuGet。 这是我的代码: public DataTable ConvertGenericListToDataTable(
我正在使用 FastMember 库将对象列表转换为数据表,但它返回空对象,所以任何人都可以帮我解决这个问题 List list = new List() { new { Number = 500 }
我已经使用这个函数成功地为属性和嵌套属性赋值 private static void AssignValueToProperty(ObjectAccessor accessor, object val
我从 http://code.google.com/p/fast-member/source/checkout 加载了 .net 3.5 FastMember在 VS 2010 中。 编译器生成此错误
我一直遇到这个错误 指定的参数超出了有效值的范围。参数名称:名称 当我几乎只是在这里复制示例时 https://code.google.com/p/fast-member/ 错误发生在 bcp.Wri
我是一名优秀的程序员,十分优秀!