【发布时间】:2016-03-05 15:12:38
【问题描述】:
我在 C# 中有一个动态类型(Content,一种继承 DynamicObject 的类型)。它包装了一个包含数据的内部 JSON 对象。在 TryGetMember 中,我从这个内部 JSON 对象返回请求的属性。这在简单类型(例如 int 或 string 属性)的情况下工作得很好,因为 .Net 正确地转换了这些值。
但我想使用更复杂类型的属性:
dynamic content = Content.Load(id);
IEnumerable<Book> bookList = content.Books;
问题在于,在我的班级的 TryGetMember 中,我无法知道应该转换为的类型(在本例中为 IEnumerable Book),因为 binder.ReturnType 总是对象。根据这篇文章,这是正常行为: Determining the expected type of a DynamicObject member access
但我觉得这很难相信:API 怎么可能不让我知道目标类型?这样我将不得不强制开发人员使用方法语法来明确指定类型:
IEnumerable<Books> bookList = content.Books<IEnumerable<Book>>();
...丑陋而奇怪。
【问题讨论】:
标签: c# dynamic types properties dynamicobject