在下面的代码中,我想返回一个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/