AssemblyCSharp.DefinitionsActivator.GetFields C# (CSharp) Метод

GetFields() публичный статический Метод

public static GetFields ( Type type, string columns ) : System.Reflection.FieldInfo[]
type System.Type
columns string
Результат System.Reflection.FieldInfo[]
        public static FieldInfo[] GetFields(Type type, string[] columns)
        {
            FieldInfo[] result;
            if (!_fieldCache.TryGetValue(type, out result))
            {
            var fields = type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            var relevantFields = new List<FieldInfo>();
            foreach (var fieldInfo in fields)
            {
                var attributes2 = fieldInfo.GetCustomAttributes(true);
                if ((attributes2.Length == 1) && (attributes2[0] is ErrorLogAttribute))
                {
                    continue;
                }

                if (fieldInfo.IsPrivate)
                {
                    var attributes = fieldInfo.GetCustomAttributes(true);
                    if (attributes.Length == 0 || !(attributes[0] is ConfigProperty))
                    {
                        continue;
                    }
                }

                relevantFields.Add(fieldInfo);

                var fieldType = fieldInfo.FieldType;
                if (fieldType == typeof(string))
                {
                    _setters[fieldInfo] = StringSetter;
                }
                else if (fieldType == typeof(int))
                {
                    _setters[fieldInfo] = IntSetter;
                }
                else if (!fieldType.IsArray)
                {
                    _setters[fieldInfo] = ConverterSetter(fieldInfo);
                }
                else
                {
                    // array
                    _arrayLength[fieldInfo] = FindLengthOfArray(fieldInfo.Name, columns);
                    var elementType = fieldType.GetElementType();
                    if (elementType == typeof(string))
                    {
                        _arraySetters[fieldInfo] = StringArraySetter;
                    }
                    else if (elementType == typeof(int))
                    {
                        _arraySetters[fieldInfo] = IntArraySetter;
                    }
                    else
                    {
                        _arraySetters[fieldInfo] = ConverterArraySetter(elementType);
                    }
                }
            }

            result = relevantFields.ToArray();
            _fieldCache[type] = result;
            }
            return result;
        }