我有一个方法,将IEnumerable类型的对象作为输入参数。我想枚举枚举,并为每个项目使用反射来获取每个属性的值。

我有以下代码:

protected void WriteData(IEnumerable data)
{
    var enumerationTypeInfo = data.GetType();
    var itemTypeInfo = enumerationTypeInfo.GetElementType();

    ...
}

问题是enumerationTypeInfo.GetElementType()总是返回null。特别是,我要将List<Entry>传递给WriteData,其中Entry是我创建的类。当我使用调试器并设置断点时,我可以看到enumerationTypeInfo正确显示它是Entry类型的List,但是GetElementType为什么返回null呢?

谢谢

最佳答案

GetElementType用于数组,而不是其他通用类。要获取通用类型的通用参数,可以使用 Type.GetGenericArguments

09-13 13:26