在下面的代码中,我想返回一个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对象的数组。

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

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

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

10-11 06:25