将类型’System.Dynamic.DynamicObject转换为System.Collections.IEnumerable
我成功地使用MVC3中的JavaScriptSerializer将json字符串反序列化为动态对象。 我无法弄清楚的是如何将它投射到我可以列举的东西上。 下面的foreach代码行是我最新的attemt,但它错误地说:“不能隐式地将类型’System.Dynamic.DynamicObject’转换为’System.Collections.IEnumerable’。如何转换或转换以便我可以遍历字典?
public dynamic GetEntities(string entityName, string entityField) { var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new MyProject.Extensions.JsonExtension.DynamicJsonConverter() }); dynamic data = serializer.Deserialize(json, typeof(object)); return data; } foreach (var author in GetEntities("author", "lastname"))
DynamicObjectinheritance自IDictionary,因此您可以将其强制转换为IDictionary。
public IDictionary GetEntities(string entityName, string entityField) { var serializer = new JavaScriptSerializer(); serializer.RegisterConverters(new[] { new MyProject.Extensions.JsonExtension.DynamicJsonConverter() }); dynamic data = serializer.Deserialize(json, typeof(object)); return data as IDictionary; } foreach (var author in GetEntities("author", "lastname"))
鉴于您使用’GetEntities’的示例,请尝试将其返回类型更改为IEnumerable
(或者,尽管强烈建议不要使用,但至少要使用IEnumerable
)。 您需要在方法中进行一些过滤,以根据’entityName’输入参数提取适当的实体。 虽然,目前还不清楚其他输入参数(’entityField’)的用途是什么。
上述就是C#学习教程:将类型’System.Dynamic.DynamicObject转换为System.Collections.IEnumerable分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012438.html