首页 > 解决方案 > c#中带有字典的泛型

问题描述

我想返回一个字典,但我可以拥有两种类型的键,所以我想在我的返回值中包含 T 。有任何想法吗?

like so

public static Dictionary<string, T> Read<T>(string dicValueType, string path)
{ 

    if(dicValueType.Equals("User"))
    {
       Dictionary<string, User> usersDictionary = 
                   JsonConvert.DeserializeObject<Dictionary<string, User>> 
                                                     (File.ReadAllText(path));
       return usersDictionary;
    }
    Dictionary<string, Column> boardDictionary = 
                     JsonConvert.DeserializeObject<Dictionary<string, Column>> 
                                                (File.ReadAllText(path));
    return boardDictionary;
}

我在“return usersDictionary;”这一行中遇到错误

标签: c#dictionarygenerics

解决方案


不是您想要将 JSON 对象反序列化为泛型。这将在没有所有if-else检查的情况下完成:

public static Dictionary<string, T> Read<T>(string path) 
    => JsonConvert.DeserializeObject<Dictionary<string, T>>(File.ReadAllText(path));

推荐阅读