当我知道成员名称时访问动态对象成员的最佳方法

本文关键字:成员 对象 最佳 动态 方法 我知道 访问 | 更新日期: 2023-09-27 18:36:03

给定一个动态对象和一个字符串成员名称:

string AMemberNameIKnowExists = "SomeMember"; //determined at runtime
dynamic myDynamicObject = //...

我想访问动态对象上的"SomeMember"成员。我是否必须使用标准反射工具,或者我有一个动态对象这一事实是否为我提供了按名称解析成员的更好方法?

当我知道成员名称时访问动态对象成员的最佳方法

我还没有测试过这个,但你应该能够使用DynamicObjectTryGetMember方法:

myDynamicObject.TryGetMember(new GetMemberBinder("SomeMember", false), out result)

据我dynamic理解,这就是像myDynamicObject.SomeMember这样的动态调用被翻译为什么。

尝试以这种方式从对象中获取属性值

myDynamicObject.GetType()
               .GetProperty("SomeMember")
               .GetValue(myDynamicObject, null);