反射中的 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 和泛型类型 IEnumerable<T> 之间存在差异。目前它认为你的意思是通用的,因为你已经包含了命名空间System.Collections.Generic;错误消息正在抱怨,因为您没有正确编写IEnumerable<T>泛型类型。

非泛型 IEnumerable 类型在 System.Collections 命名空间中声明,因此请添加对它的引用。(using System.Collections;)。

如果你确实想使用泛型类型,那么你应该有这样的东西:foreach(var value in (item as IEnumerable<string>))其中字符串是item枚举的对象类型。

请参阅 IEnumerable

和 IEnumerable以及有关泛型类型的此信息。

正如评论中所述,您已经问过这个问题。不过,此实例的问题略有不同。您收到编译器错误,因为您在源文件中包含 System.Collections.Generic 命名空间(top using 子句)。该命名空间包含 IEnumerable -> IEnumerable<T> 的通用版本。因此,您的施法失败了。如果要使用 IEnumerable 添加"using System.Collections"。