2011-08-11 63 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