private static FieldInfo GetField(Module context, Type type, string name, Type fieldType) { Type org = type; for (; type != null && !type.__IsMissing; type = type.BaseType) { foreach (FieldInfo field in type.__GetDeclaredFields()) { if (field.IsPublic && !field.IsStatic && field.Name == name) { return field; } } } // if the field is missing, we stick the missing field on the first missing base type if (type == null) { type = org; } FieldSignature sig = FieldSignature.Create(fieldType, new CustomModifiers()); return type.FindField(name, sig) ?? type.Module.universe.GetMissingFieldOrThrow(context, type, name, sig); }
private static FieldInfo GetField(Type type, string name) { for (; type != null; type = type.BaseType) { foreach (FieldInfo field in type.__GetDeclaredFields()) { if (field.IsPublic && !field.IsStatic && field.Name == name) { return field; } } } return null; }