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

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?
1个回答

4
你需要使用的是Type.GetElementType方法。
当在派生类中重写时,返回当前数组、指针或引用类型所包含或引用的对象的类型。
Type arrayElementType = typeof(T).GetElementType();

是的,我知道这肯定是一个非常显而易见的问题。我的临时变量几乎就是这个名字。非常感谢你的答案! - Devoramadoomalama
@Devoramadoomalama:干杯 - 我记得我也找了很久。 - Ani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接