private static Dictionary <string, AopAttribute> GetAopAttributes(Type type)
        {
            Dictionary <string, AopAttribute> value = null;

            if (attrs.TryGetValue(type.FullName, out value) && value != null)
            {
                return(value);
            }
            value = new Dictionary <string, AopAttribute>();
            PropertyInfo[] properties = type.GetProperties();
            PropertyInfo[] array      = properties;
            foreach (PropertyInfo propertyInfo in array)
            {
                AopAttribute aopAttribute = new AopAttribute();
                aopAttribute.Method = propertyInfo.GetSetMethod();
                XmlElementAttribute[] array2 = propertyInfo.GetCustomAttributes(typeof(XmlElementAttribute), inherit: true) as XmlElementAttribute[];
                if (array2 != null && array2.Length != 0)
                {
                    aopAttribute.ItemName = array2[0].ElementName;
                }
                if (aopAttribute.ItemName == null)
                {
                    XmlArrayItemAttribute[] array3 = propertyInfo.GetCustomAttributes(typeof(XmlArrayItemAttribute), inherit: true) as XmlArrayItemAttribute[];
                    if (array3 != null && array3.Length != 0)
                    {
                        aopAttribute.ItemName = array3[0].ElementName;
                    }
                    XmlArrayAttribute[] array4 = propertyInfo.GetCustomAttributes(typeof(XmlArrayAttribute), inherit: true) as XmlArrayAttribute[];
                    if (array4 != null && array4.Length != 0)
                    {
                        aopAttribute.ListName = array4[0].ElementName;
                    }
                    if (aopAttribute.ListName == null)
                    {
                        continue;
                    }
                }
                if (propertyInfo.PropertyType.IsGenericType)
                {
                    Type[] genericArguments = propertyInfo.PropertyType.GetGenericArguments();
                    aopAttribute.ListType = genericArguments[0];
                }
                else
                {
                    aopAttribute.ItemType = propertyInfo.PropertyType;
                }
                value.Add(propertyInfo.Name + aopAttribute.ItemType + aopAttribute.ListType, aopAttribute);
            }
            attrs[type.FullName] = value;
            return(value);
        }