在数组和通用列表上混淆"GetElementType"的结果

Roo*_*ian 7 c# arrays generics reflection generic-list

通用列表:

var elementType1 = typeof (List<A>).GetElementType();
Run Code Online (Sandbox Code Playgroud)

阵:

var elementType = typeof (A[]).GetElementType();
Run Code Online (Sandbox Code Playgroud)

为什么我只获取数组的元素类型?我怎样才能获得通用列表的元素类型?(注释:通用列表已装箱)

Ani*_*Ani 13

GetElementType 只获取数组,指针和引用类型的元素类型.

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

反射API不"知道"这List<T>是一个通用容器,并且其构造类型之一的type-argument代表它包含的元素的类型.

使用该GetGenericArguments方法来获取构造类型的类型参数:

var elementType1 = typeof(List<A>).GetGenericArguments().Single();
Run Code Online (Sandbox Code Playgroud)


Sno*_*ear 5

var elementType1 = typeof(List<A>).GetGenericArguments()[0]; 
var elementType = typeof(int[]).GetElementType();
Run Code Online (Sandbox Code Playgroud)