我有一个通用的包装类,它有时可以接收一个数组类型作为它的泛型。我可以通过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?
答案 0 :(得分:4)
您正在寻找Type.GetElementType
方法。
在派生类中重写时,返回对象的Type 由当前数组,指针或引用包含或引用 类型。
Type arrayElementType = typeof(T).GetElementType();