public Dictionary <string, FieldInfo> GetFields(Type type, Field_Access_Mode access) { Dictionary <string, FieldInfo> fd = new Dictionary <string, FieldInfo>(); GetFieldsInternal(type, fd, access); Type baseType = type.BaseType; while (baseType != null && baseType != typeof(object)) { GetFieldsInternal(baseType, fd, access); baseType = baseType.BaseType; } return(fd); }
private void GetFieldsInternal(Type type, Dictionary <string, FieldInfo> fd, Field_Access_Mode access) { FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); foreach (FieldInfo field in fields) { Field_Access_Mode fam = GetAccess(field); if (!access.HasFlag(fam)) { continue; } if (fd.ContainsKey(field.Name)) { continue; } fd.Add(field.Name, field); } }