有没有办法获得存储在通用列表中的对象类型?

Phi*_*Gan 4 .net c# generics reflection gettype

给定一个类型的通用列表List<T>我如何找到类型T

我想如果列表已填充,我可以采取,listInstance[0].GetType()但这似乎有点hackish.

编辑:

对于上下文,我想使用基于对象属性的列填充DataTable.如果对象属性是通用列表,我想为列表存储的对象的每个属性添加一列.我将在稍后展平数据结构以适应DataRow.

我不想在列表中使用第一个对象的类型的原因是因为不能保证每个实例都会填充列表.有些人会,有些则不会,但我仍然需要提前列出所有栏目.

Mic*_*oll 7

你可以试试

typeof(List<T>).GetGenericArguments()[0]
Run Code Online (Sandbox Code Playgroud)

这适用于空数组,而您的版本不适用.

更新:

在实例上使用

instance.GetType().GetGenericArguments()[0]
Run Code Online (Sandbox Code Playgroud)

  • 不傻,但很容易;).我很高兴有多少人会冒这个问题冒险使用IndexOutOfRangeException. (4认同)