2011-08-11 66 views
4

我有一個通用包裝類,它有時可以接收數組類型作爲其泛型。我可以通過IsArray屬性判斷提供的泛型類型是否是一個數組。但是有沒有一種方法可以獲取代碼中的數組元素的類型?我查看了Type對象的所有暴露屬性,但沒有看到它。獲取通用類型數組中元素的類型

例子:

public class wrap<T> 
{ 
    public void doSomething() 
    { 
     if (typeof(T).IsArray) 
      Type arrayElementType = typeof(T).??? ; 
    } 
} 
     // typeof(T) when an array is "int[]" 
     // typeof(T).BaseType is "System.Array" 
     // how to get "int" out of this? 

回答

4

您正在尋找的Type.GetElementType方法。

在派生類重寫時,返回包含或由當前的陣列,指針或引用類型 引用的對象 的類型。

Type arrayElementType = typeof(T).GetElementType(); 
+0

呀,於是,我就知道這將會是荒謬的東西明顯。我的臨時變量幾乎也是這個名字。非常感謝答案! – Devoramadoomalama

+0

@Devoramadoomalama:歡呼聲 - 我記得還有很多。 – Ani