/// <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); } } }
/// <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); } } } }