我發現下面的有點混亂....泛型類型參數不是類型?
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