C# 动态地将列表类型化为json.net,使用反射进行反序列化

C# 动态地将列表类型化为json.net,使用反射进行反序列化,c#,json,list,dynamic,reflection,C#,Json,List,Dynamic,Reflection,我有个小问题。 我应该通过c#中的json.net库反序列化json。 我不明白你怎么能用粗体来切换输入列表,当然,都是用反射,因为我在用一种通用的方法 有人能给我启示吗?或者解决方案:) 错误:实体类型JArray不是当前上下文模型的一部分。 谢谢 我需要的是能够读取json,在您现在看到我时动态地反序列化您的对象。。。从我粘在一起的那个错误中。 有什么解决方案吗?我们应该基于特定类型创建一个通用类型的列表,如 var listType = typeof (List<>).Make

我有个小问题。 我应该通过c#中的json.net库反序列化json。 我不明白你怎么能用粗体来切换输入列表,当然,都是用反射,因为我在用一种通用的方法

有人能给我启示吗?或者解决方案:)

错误:实体类型JArray不是当前上下文模型的一部分。

谢谢

我需要的是能够读取json,在您现在看到我时动态地反序列化您的对象。。。从我粘在一起的那个错误中。
有什么解决方案吗?

我们应该基于特定类型创建一个通用类型的
列表
,如

var listType = typeof (List<>).MakeGenericType(type);
var listType=typeof(列表)。MakeGenericType(类型);
以下是将json值反序列化为具有自定义类型的列表的完整示例:

    public static void insertTable(String json, String table)
    {
        using (localDBService db = new localDBService())
        {
            var tableType = Type.GetType("eStartService." + table);
            var list = DeserializeList(json, tableType);

            try
            {
                var set = db.Set(tableType);

                foreach (var item in list)
                    set.Add(item);
                db.SaveChanges();
                log.Info("Scritto sul database dal metodo InsertTable");
            }
            catch (Exception ex)
            {
                log.Info("ERRORE DI SCRITTURA SUL DATABASE METODO : insertTable");
                throw ex;
            }
        }
    }


    private static IList DeserializeList( string value,Type type)
    {
        var listType = typeof (List<>).MakeGenericType(type);
        var list = JsonConvert.DeserializeObject(value, listType);
        return list as IList;
    }
publicstaticvoidinserttable(stringjson,stringtable)
{
使用(localDBService db=newlocaldbservice())
{
var tableType=Type.GetType(“eStartService.+table”);
var list=反序列化列表(json,tableType);
尝试
{
var set=db.set(表类型);
foreach(列表中的变量项)
设置。添加(项目);
db.SaveChanges();
log.Info(“Scritto sul数据库dal metodo InsertTable”);
}
捕获(例外情况除外)
{
log.Info(“Error DI SCRITTURA SUL DATABASE METODO:insertTable”);
掷骰子;
}
}
}
私有静态IList反序列化列表(字符串值,类型)
{
var listType=typeof(列表)。MakeGenericType(类型);
var list=JsonConvert.DeserializeObject(值,listType);
返回列表为IList;
}

我们应该基于特定类型创建一个
列表的泛型类型,如

var listType = typeof (List<>).MakeGenericType(type);
var listType=typeof(列表)。MakeGenericType(类型);
以下是将json值反序列化为具有自定义类型的列表的完整示例:

    public static void insertTable(String json, String table)
    {
        using (localDBService db = new localDBService())
        {
            var tableType = Type.GetType("eStartService." + table);
            var list = DeserializeList(json, tableType);

            try
            {
                var set = db.Set(tableType);

                foreach (var item in list)
                    set.Add(item);
                db.SaveChanges();
                log.Info("Scritto sul database dal metodo InsertTable");
            }
            catch (Exception ex)
            {
                log.Info("ERRORE DI SCRITTURA SUL DATABASE METODO : insertTable");
                throw ex;
            }
        }
    }


    private static IList DeserializeList( string value,Type type)
    {
        var listType = typeof (List<>).MakeGenericType(type);
        var list = JsonConvert.DeserializeObject(value, listType);
        return list as IList;
    }
publicstaticvoidinserttable(stringjson,stringtable)
{
使用(localDBService db=newlocaldbservice())
{
var tableType=Type.GetType(“eStartService.+table”);
var list=反序列化列表(json,tableType);
尝试
{
var set=db.set(表类型);
foreach(列表中的变量项)
设置。添加(项目);
db.SaveChanges();
log.Info(“Scritto sul数据库dal metodo InsertTable”);
}
捕获(例外情况除外)
{
log.Info(“Error DI SCRITTURA SUL DATABASE METODO:insertTable”);
掷骰子;
}
}
}
私有静态IList反序列化列表(字符串值,类型)
{
var listType=typeof(列表)。MakeGenericType(类型);
var list=JsonConvert.DeserializeObject(值,listType);
返回列表为IList;
}

我们应该基于特定类型创建一个
列表的泛型类型,如

var listType = typeof (List<>).MakeGenericType(type);
var listType=typeof(列表)。MakeGenericType(类型);
以下是将json值反序列化为具有自定义类型的列表的完整示例:

    public static void insertTable(String json, String table)
    {
        using (localDBService db = new localDBService())
        {
            var tableType = Type.GetType("eStartService." + table);
            var list = DeserializeList(json, tableType);

            try
            {
                var set = db.Set(tableType);

                foreach (var item in list)
                    set.Add(item);
                db.SaveChanges();
                log.Info("Scritto sul database dal metodo InsertTable");
            }
            catch (Exception ex)
            {
                log.Info("ERRORE DI SCRITTURA SUL DATABASE METODO : insertTable");
                throw ex;
            }
        }
    }


    private static IList DeserializeList( string value,Type type)
    {
        var listType = typeof (List<>).MakeGenericType(type);
        var list = JsonConvert.DeserializeObject(value, listType);
        return list as IList;
    }
publicstaticvoidinserttable(stringjson,stringtable)
{
使用(localDBService db=newlocaldbservice())
{
var tableType=Type.GetType(“eStartService.+table”);
var list=反序列化列表(json,tableType);
尝试
{
var set=db.set(表类型);
foreach(列表中的变量项)
设置。添加(项目);
db.SaveChanges();
log.Info(“Scritto sul数据库dal metodo InsertTable”);
}
捕获(例外情况除外)
{
log.Info(“Error DI SCRITTURA SUL DATABASE METODO:insertTable”);
掷骰子;
}
}
}
私有静态IList反序列化列表(字符串值,类型)
{
var listType=typeof(列表)。MakeGenericType(类型);
var list=JsonConvert.DeserializeObject(值,listType);
返回列表为IList;
}

我们应该基于特定类型创建一个
列表的泛型类型,如

var listType = typeof (List<>).MakeGenericType(type);
var listType=typeof(列表)。MakeGenericType(类型);
以下是将json值反序列化为具有自定义类型的列表的完整示例:

    public static void insertTable(String json, String table)
    {
        using (localDBService db = new localDBService())
        {
            var tableType = Type.GetType("eStartService." + table);
            var list = DeserializeList(json, tableType);

            try
            {
                var set = db.Set(tableType);

                foreach (var item in list)
                    set.Add(item);
                db.SaveChanges();
                log.Info("Scritto sul database dal metodo InsertTable");
            }
            catch (Exception ex)
            {
                log.Info("ERRORE DI SCRITTURA SUL DATABASE METODO : insertTable");
                throw ex;
            }
        }
    }


    private static IList DeserializeList( string value,Type type)
    {
        var listType = typeof (List<>).MakeGenericType(type);
        var list = JsonConvert.DeserializeObject(value, listType);
        return list as IList;
    }
publicstaticvoidinserttable(stringjson,stringtable)
{
使用(localDBService db=newlocaldbservice())
{
var tableType=Type.GetType(“eStartService.+table”);
var list=反序列化列表(json,tableType);
尝试
{
var set=db.set(表类型);
foreach(列表中的变量项)
设置。添加(项目);
db.SaveChanges();
log.Info(“Scritto sul数据库dal metodo InsertTable”);
}
捕获(例外情况除外)
{
log.Info(“Error DI SCRITTURA SUL DATABASE METODO:insertTable”);
掷骰子;
}
}
}
私有静态IList反序列化列表(字符串值,类型)
{
var listType=typeof(列表)。MakeGenericType(类型);
var list=JsonConvert.DeserializeObject(值,listType);
返回列表为IList;
}

我的问题是,我不知道这个类会,我有大约30个项目,相当于你放的Foo。对我来说,Foo是动态的想法。@Developer是的,Foo只是一个示例,正如您在示例中所看到的,我刚刚将Foo类型传递给了
反序列化列表
方法,我们可以传递任何其他类型的instead可以使用Foo reflecfion吗?或者更确切地说。。如何处理Foo动态反射?也许我错过了一杯水我需要做的是