转换类型'System.Dynamic.DynamicObject到System.Collections.IEnumerable [英] Convert type 'System.Dynamic.DynamicObject to System.Collections.IEnumerable

查看:1133
本文介绍了转换类型'System.Dynamic.DynamicObject到System.Collections.IEnumerable的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我成功地使用的JavaScriptSerializer在MVC3中动态对象反序列化一个JSON字符串。我想不通的是如何将它转换的东西,我可以枚举。下面的代码行的foreach是我最新的attemt但有错误:无法隐式转换类型'System.Dynamic.DynamicObject'到'System.Collections.IEnumerable我怎么能转换或投,这样我可以通过字典遍历?

 公共动态GetEntities(字符串的entityName,串entityField)
{
无功序列化=新的JavaScriptSerializer( );
serializer.RegisterConverters(新[] {新MyProject.Extensions.JsonExtension.DynamicJsonConverter()});
动态数据= serializer.Deserialize(JSON的typeof(对象));
返回数据;
}


的foreach(在GetEntities VAR作者(作家,姓氏))


解决方案

DynamicObject从IDictionary的继承,所以你可以将它转换为IDictionary的。

 公开的IDictionary<字符串对象> GetEntities(字符串的entityName,串entityField)
{
无功序列化=新的JavaScriptSerializer();
serializer.RegisterConverters(新[] {新MyProject.Extensions.JsonExtension.DynamicJsonConverter()});
动态数据= serializer.Deserialize(JSON的typeof(对象));
返回数据的IDictionary<字符串对象> ;;
}




的foreach(在GetEntities VAR作者(作家,姓氏))


I'm successfully using the JavaScriptSerializer in MVC3 to de-serialize a json string in to a dynamic object. What I can't figure out is how to cast it to something I can enumerate over. The foreach line of code below is my latest attemt but it errors with: "Cannot implicitly convert type 'System.Dynamic.DynamicObject' to 'System.Collections.IEnumerable'. How can I convert or cast so that I can iterate through the dictionary?

 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"))

解决方案

DynamicObject is inherited from IDictionary, so you can cast it to IDictionary.

public IDictionary<string, object> 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<string, object>;
    }




foreach (var author in GetEntities("author", "lastname"))

这篇关于转换类型'System.Dynamic.DynamicObject到System.Collections.IEnumerable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆