2015-03-31 48 views
0

在通用方法中,我想知道傳遞的實際參數的類型。比如我有兩個類:在.NET通用方法中,如何獲取實際參數類型

class A {} 
class B {} 

隨後的方法服用任何類作爲參數:

void M<T>(T instance) 
{ 
    // how to tell what is the type of T if instance is null? 
    // (so instance.GetType() won't work) 
} 

例如如何在被調用的方法以下兩個電話之間的區別:

M<A>(null); 
M<B>(null); 

這樣的事情可能嗎?方法MethodBase.GetCurrentMethod()返回泛型方法定義,而不是實際泛型參數。對於StackTrace幀也是如此。

+2

'typeof(T)'得到你的類型 – Grax 2015-03-31 14:37:55

+0

我覺得很愚蠢! (但我已經習慣了)。謝謝。 – picrap 2015-03-31 14:44:34

回答

1

typeof(T)讓你的類型。通常當我在一個泛型類或方法中時,這是我想要的基礎類型。

instance.GetType()獲取實例的類型,但我可能正在尋找一個實現的接口或基類,並且.GetType()將永遠不會返回該實例。另外,正如你所指出的那樣,如果你在空值上調用.GetType(),你會得到一個空引用異常。

相關問題