为了账号安全,请及时绑定邮箱和手机立即绑定

如何反映动态对象的成员?

如何反映动态对象的成员?

C#
尚方宝剑之说 2019-07-09 13:18:12
如何反映动态对象的成员?我需要从.NET 4中使用Dynamic关键字声明的对象中获得属性及其值的字典?似乎使用反射是行不通的。例子:dynamic s = new ExpandoObject();s.Path = "/Home";s.Name = "Home";// How do I enumerate the Path and Name properties and get their values?IDictionary<string, object> propertyValues = ???
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

如果IDynamicMetaObjectProvider可以提供动态成员名,则可以获得它们。看见GetMemberNamesApache许可PCL库中的实现动力(可以在Nuget找到),它适用于ExpandoObjectS和DynamicObjects实现GetDynamicMemberNames和任何其他IDynamicMetaObjectProvider提供元对象的GetDynamicMemberNames没有自定义测试is IDynamicMetaObjectProvider.

在获得成员名称之后,要以正确的方式获得值还需要做一些工作,但这是临时做的,但是很难仅仅指出有趣的部分并使其有意义。这是文献资料但是,它与反射相同或更快,不太可能比字典查找扩展操作的速度更快,但它适用于任何对象、扩展、动态或原始-您可以将其命名为。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信