我有一个Class,其中我有一个包含特定Key的Dictionary。但价值应该是通用的。
类似的东西:
private Dictionary<String,TValue> _Dictionary;
但是找不到TValue(obvesly)但我应该放入什么呢?我找到了IList的解决方案,但我只想添加一个通用对象。
答案 0 :(得分:2)
所以你想要一个通用词典?使用预定义的类。
public Dictionary<int, string> _dictionary = new Dictionary<int, string>();
它为您提供了一个包含整数键和字符串值的字典。如果您需要一个仅包含其中一个变量的词典,您可以继承Dictionary以创建自己的类型。
public class KeyTypeConstantDictionary<T> : Dictionary<int, T>
{
}
然后使用它就像这样:
KeyTypeConstantDictionary<string> x = new KeyTypeConstantDictonary<string>();
// Equivalent to Dictionary<int, string>()
KeyTypeConstantDictionary<SomeObject> x = new KeyTypeConstantDictonary<SomeObject>();
// Equivalent to Dictionary<int, SomeObject>()
希望我能正确理解你的问题。
答案 1 :(得分:2)
如果您在通用类型中使用此功能,则Tejs answer是合适的。
但是,如果您只是尝试使用固定类型的密钥创建字典,但可以存储任何值,则只需使用System.Object
作为您的值:
private Dictionary<string, object> _dictionary;
这将允许您将任何对象分配给值。但是,这有潜在危险,因为您丢失了类型安全性并需要确保取消装箱并正确转换对象。