コード例 #1
0
        /// <summary>
        /// Copies values from Inspector PropertySettings to an instantiated class on start,
        /// helps overcome polymorphism limitations of serialization
        /// </summary>
        /// <param name="target"></param>
        /// <param name="settings"></param>
        public static void LoadSettings(T target, List <InspectorPropertySetting> settings)
        {
            Type myType = target.GetType();

            PropertyInfo[] propInfoList = myType.GetProperties();
            for (int i = 0; i < propInfoList.Length; i++)
            {
                PropertyInfo propInfo = propInfoList[i];
                var          attrs    = (InspectorField[])propInfo.GetCustomAttributes(typeof(InspectorField), false);
                foreach (var attr in attrs)
                {
                    object value = InspectorField.GetSettingValue(settings, propInfo.Name);
                    propInfo.SetValue(target, value);
                }
            }

            FieldInfo[] fieldInfoList = myType.GetFields();
            for (int i = 0; i < fieldInfoList.Length; i++)
            {
                FieldInfo fieldInfo = fieldInfoList[i];
                var       attrs     = (InspectorField[])fieldInfo.GetCustomAttributes(typeof(InspectorField), false);
                foreach (var attr in attrs)
                {
                    object value = InspectorField.GetSettingValue(settings, fieldInfo.Name);
                    fieldInfo.SetValue(target, value);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Copies values from Inspector PropertySettings to an instantiated class on start,
        /// helps overcome polymorphism limitations of serialization
        /// </summary>
        public static void LoadSettings(T target, List <InspectorPropertySetting> settings)
        {
            Type myType = target.GetType();

            List <PropertyInfo> propInfoList = new List <PropertyInfo>(myType.GetProperties());

            for (int i = 0; i < propInfoList.Count; i++)
            {
                PropertyInfo propInfo = propInfoList[i];
                var          attrs    = (InspectorField[])propInfo.GetCustomAttributes(typeof(InspectorField), false);
                foreach (var attr in attrs)
                {
                    object value = InspectorField.GetSettingValue(settings, propInfo.Name);
                    if (value != null)
                    {
                        propInfo.SetValue(target, value);
                    }
                }
            }

            List <FieldInfo> fieldInfoList = new List <FieldInfo>(myType.GetFields());

            for (int i = 0; i < fieldInfoList.Count; i++)
            {
                FieldInfo fieldInfo = fieldInfoList[i];
                var       attrs     = (InspectorField[])fieldInfo.GetCustomAttributes(typeof(InspectorField), false);
                foreach (var attr in attrs)
                {
                    object value = InspectorField.GetSettingValue(settings, fieldInfo.Name);
                    if (value != null)
                    {
                        fieldInfo.SetValue(target, value);
                    }
                }
            }
        }