c# - 在 C# 中将数组序列 T myArray[] 转换为 IEnumerable<T>

标签 c# linq enumerable

在下面的代码中,我想在不创建新数据结构对象的情况下返回一个 IEnumerable。但是,我收到以下代码的编译器错误。我错过了什么?

Error       Cannot implicitly convert type 'System.Reflection.FieldInfo[]' to 'System.Reflection.FieldInfo' 

public static IEnumerable<FieldInfo> GetAllFields(Type objectType)
{
   while (objectType != null)
   {
      //GetFields(...) returns a FieldInfo []
      yield return objectType.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
      objectType = objectType.BaseType;
   }
}

最佳答案

Type.GetFields 返回一个 FieldInfo 对象数组。

由于您不返回数组集合,因此您必须遍历数组并 yield 返回其中的每个对象,有点像这样:

foreach (var fi in objectType.GetFields(...))
    yield return fi;

关于c# - 在 C# 中将数组序列 T myArray[] 转换为 IEnumerable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147001/

相关文章:

c# - 具有通用 ID 的通用存储库 - 如何在 int 时检索

c# - Linq to DataTable - 无法转换 DBNull

c# - LINQ 多对多交集

ruby - 查看所有元素是否不为零的最短方法是什么?

C# EnumerateDirectories 不应使用本地化路径

c# - 手动发送分块请求

c# - 使用 Roslyn 将类(class)成员添加到特定位置?

Ruby:如何设置枚举器的状态?

ruby - 如何在一行内遍历这个散列?

c# - 如何在旧的 ASP.NET 网站(非网站项目)中使用 C# 6.0 或 7.0