Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }