猿问

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

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

我需要从.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 = ???


尚方宝剑之说
浏览 454回答 3
3回答

沧海一幻觉

如果IDynamicMetaObjectProvider可以提供动态成员名,则可以获得它们。看见GetMemberNamesApache许可PCL库中的实现动力(可以在Nuget找到),它适用于ExpandoObjectS和DynamicObjects实现GetDynamicMemberNames和任何其他IDynamicMetaObjectProvider提供元对象的GetDynamicMemberNames没有自定义测试is IDynamicMetaObjectProvider.在获得成员名称之后,要以正确的方式获得值还需要做一些工作,但这是临时做的,但是很难仅仅指出有趣的部分并使其有意义。这是文献资料但是,它与反射相同或更快,不太可能比字典查找扩展操作的速度更快,但它适用于任何对象、扩展、动态或原始-您可以将其命名为。
随时随地看视频慕课网APP
我要回答