private static FieldInfo[] ConcatInheritedFields(FieldInfo[] fields, Type objType, int maxRecursionDepth = 0) { if (maxRecursionDepth > 2) return fields; Type baseType = objType.BaseType; if (baseType == null) return fields; FieldInfo[] inheritedFields = baseType.GetFields(_bindingFlags); fields = fields.Concat(inheritedFields).ToArray(); return ConcatInheritedFields(fields, baseType, maxRecursionDepth + 1); }