我发现下面的有点混乱....泛型类型参数不是类型?
Dictionary<Type, Object> _typeMap;
public void RegisterType<T>(Object o)
{
_typeMap.Add(typeof(T), o);
}
为什么在Add
方法需要typeof(T)
?是不是T
类型参数已经是Type
?还有什么呢?
我发现下面的有点混乱....泛型类型参数不是类型?
Dictionary<Type, Object> _typeMap;
public void RegisterType<T>(Object o)
{
_typeMap.Add(typeof(T), o);
}
为什么在Add
方法需要typeof(T)
?是不是T
类型参数已经是Type
?还有什么呢?
T
是一种类型的名称,和typeof
用于检索对应Type
对象。
泛型类型参数的工作原理与其他类型名称完全相同,如int
。你也不能确切地做typeMap.Add(int, 0);
。
第Add
这里需要Type
类的一个实例。
一般类型参数是不Type
类的实例。
你HACE把将typeof(T),因为T是类的定义,类型是描述一个类型的对象,这对于T和对象和字符串...等等等等
的typeof获取类定义的类型。
这个解决方案让我觉得有点“opps”。我认为该代码的结果将始终尝试添加一个键入“类型”的词条到词典中,因为您总是得到类型的“typeof”。相反,我觉得你在找什么是...
public void RegisterType<T>(Object o)
{
_typeMap.Add(T, o);
}
希望它能帮助!
您不能将“T”传递给_typeMap.Add,因为“T”不是表达式。你需要一个System.Type类型的表达式来传递给Add。 – 2011-05-04 13:38:25
非常感谢。也许MSDN应该将它们称为“类型名称参数”而不是“类型参数”,本可以让我省却混乱。 – fearofawhackplanet 2011-05-04 10:50:51