可能重复:
How to iterate the List in Reflection
Problem with IEnumerable in Reflection
您好,
我在反思中迭代列表时遇到了问题。
var item = property.GetValue(obj,null); // We dont know the type of obj as it is in Reflection.
foreach(var value in (item as IEnumerable))
{
//Do stuff
}
如果我这样做,我会得到像
这样的错误使用泛型类型'System.Collections.Generic.IEnumerable'需要1个类型参数
请帮帮我。
答案 0 :(得分:9)
类型IEnumerable
与通用类型IEnumerable<T>
之间存在差异。目前它认为你的意思是通用的,因为你已经包含了命名空间System.Collections.Generic
;错误消息正在抱怨,因为您没有正确编写IEnumerable<T>
泛型类型。
非通用IEnumerable
类型在System.Collections
命名空间中声明,因此添加对它的引用。 (using System.Collections;
)。
如果你的意思是使用泛型类型,那么你应该有这样的东西:foreach(var value in (item as IEnumerable<string>))
其中string是对象item
枚举的类型。
请参阅IEnumerable和IEnumerable<T>以及此information about generic types.
答案 1 :(得分:0)
如评论中所述,您已经问过这个问题。虽然这个实例的问题略有不同。您收到编译器错误,因为您在源文件中包含System.Collections.Generic命名空间(top using using子句)。该命名空间包含IEnumerable的通用版本 - &gt; IEnumerable<T>
。你的演员因此而失败。如果你想使用IEnumerable add
“using System.Collections
”。