C# c语言中带字典的泛型

C# c语言中带字典的泛型,c#,dictionary,generics,C#,Dictionary,Generics,我想返回一个字典,但是有两种类型的键可以使用,所以我想在返回值中包含T。有什么想法吗 like so public static Dictionary<string, T> Read<T>(string dicValueType, string path) { if(dicValueType.Equals("User")) { Dictionary<string, User> usersDictionary =

我想返回一个字典,但是有两种类型的键可以使用,所以我想在返回值中包含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;
}

我在这一行中得到一个错误returnusersdictionary

并不是将JSON对象反序列化为泛型的全部。这将在不进行所有if-else检查的情况下完成:


当只有两个有效值时,不要将方法设为泛型,任何其他值只会使其中断。如果你想做两件事中的一件,那么有两种方法,并为每种情况打一个合适的方法。除了Servy所说的,你可以考虑一个类来保存一个值,并通过GETTER方法返回什么是适当的。但是没有办法按照我的意愿去做。今天有两种选择,明天可以500@somene看看这个,也许这会对你的情况有所帮助。dictionary.GetType是dictionary我如何比较它们?[字典看起来像这样:dictionary]@有人我不确定你的意思,最好用一个MCVE例子来回答一个新问题。啊,我想你在寻找dict.GetType==typeofDictionary
public static Dictionary<string, T> Read<T>(string path) 
    => JsonConvert.DeserializeObject<Dictionary<string, T>>(File.ReadAllText(path));