获取泛型类型数组中元素的类型

时间:2011-08-11 16:18:27

标签: c# arrays generics types

我有一个通用的包装类,它有时可以接收一个数组类型作为它的泛型。我可以通过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?

1 个答案:

答案 0 :(得分:4)

您正在寻找Type.GetElementType方法。

  

在派生类中重写时,返回对象的Type   由当前数组,指针或引用包含或引用   类型。

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