反射中的 IEnumerable 问题
本文关键字:问题 IEnumerable 反射 | 更新日期: 2023-09-27 17:55:42
可能的重复项:
如何在反射
中迭代列表 反射中的 IEnumerable 问题
你好
我在反思中迭代列表时遇到了一个问题。
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 个类型参数
请帮助我。
类型
IEnumerable
和泛型类型 IEnumerable<T>
之间存在差异。目前它认为你的意思是通用的,因为你已经包含了命名空间System.Collections.Generic
;错误消息正在抱怨,因为您没有正确编写IEnumerable<T>
泛型类型。
非泛型 IEnumerable
类型在 System.Collections
命名空间中声明,因此请添加对它的引用。(using System.Collections;
)。
如果你确实想使用泛型类型,那么你应该有这样的东西:foreach(var value in (item as IEnumerable<string>))
其中字符串是item
枚举的对象类型。
和 IEnumerable
正如评论中所述,您已经问过这个问题。不过,此实例的问题略有不同。您收到编译器错误,因为您在源文件中包含 System.Collections.Generic 命名空间(top using 子句)。该命名空间包含 IEnumerable -> IEnumerable<T>
的通用版本。因此,您的施法失败了。如果要使用 IEnumerable 添加"using System.Collections
"。