2016-03-02 116 views
0

我想獲得泛型類的類型。例如,大多數問題都是圍繞嘗試從List(Of T)檢索Type T的人員進行的。相反,我想類的類本身,即System.Collections.Generic.List從泛型類(T)獲取類的類型

我想下面的代碼,但它返回類型,包括泛型參數。如果我然後嘗試使用不同的泛型類型創建類的實例,由於Type已關閉,因此我得到一個錯誤。

'The type I want to use a a Generic Parameter in a new object 
dim O = MasterObject 

'This is the class which is Generic  
dim BaseType as Type = me.getType 

'This is the line that errors, since BaseType already has a Generic Type 
dim GenericType as Type=BaseType.MakeGenericType(O.getType()) 

'This would be the new object, with a new generic type 
dim NewObject as Object = Activator.CreateInstance(GenericType,vars) 

那麼有沒有一種方法來清除類型的一般參數或某種方式來提取沒有通用參數的類型?

回答

1

你可以得到打開一個調用Type.GetGenericTypeDefinition

順便說一句,如果你真的知道你要創建一個List<T>的實例,你可以使用GetType(List(Of T))獲得泛型類型定義。

+1

@CodeCaster是的...我編輯它。我認爲OP認爲實際類型只是'List';( –

+0

謝謝!對不起,應該清楚我的List的例子只是一個例子...實際上,我的類型將是許多類型的繼承子類之一....但你的答案完美無瑕,我可以在2分鐘內將它標記爲正確:-) – JLo

+0

@JLo我很高興它的工作;)不客氣! –