public void SetProperties(OptimizerSettingsPropertyList propertyList) { foreach (var propertyInfo in GetType().GetProperties().Where(p => p.CanRead && p.CanWrite)) { IEnumerable <Attribute> customAttributes = propertyInfo.GetCustomAttributes(typeof(TypeConverterAttribute)); TypeConverter typeConverter; if (customAttributes.Count() > 0) { typeConverter = (TypeConverter)Activator.CreateInstance(Type.GetType(((TypeConverterAttribute)customAttributes.First <Attribute>()).ConverterTypeName)); } else { typeConverter = TypeDescriptor.GetConverter(propertyInfo.PropertyType); } if (typeConverter != null && typeConverter.CanConvertFrom(typeof(string))) { string value = propertyList.GetValue(propertyInfo.Name); if (value != null && typeConverter.IsValid(value)) { propertyInfo.SetValue(this, typeConverter.ConvertFromInvariantString(value), null); } } } }
public OptimizerSettingsPropertyList GetProperties() { var optimizerSettingsPropertyList = new OptimizerSettingsPropertyList(); foreach (var propertyInfo in GetType().GetProperties().Where(p => p.CanRead && p.CanWrite)) { var customAttributes = propertyInfo.GetCustomAttributes(typeof(TypeConverterAttribute)); TypeConverter typeConverter; if (customAttributes.Count() > 0) { typeConverter = (TypeConverter)Activator.CreateInstance(Type.GetType(((TypeConverterAttribute)customAttributes.First <Attribute>()).ConverterTypeName)); } else { typeConverter = TypeDescriptor.GetConverter(propertyInfo.PropertyType); } if (typeConverter != null && typeConverter.CanConvertTo(typeof(string)) && typeConverter.CanConvertFrom(typeof(string))) { object value = propertyInfo.GetValue(this, null); optimizerSettingsPropertyList.Items.Add(new OptimizerSettingsProperty(propertyInfo.Name, typeConverter.ConvertToInvariantString(value))); } } return(optimizerSettingsPropertyList); }