public virtual void SetValue(object instance, PropertyInfo propertyInfo, object newValue)
        {
            if (instance == null)
            {
                throw new ArgumentNullException(nameof(instance));
            }

            if (propertyInfo == null)
            {
                throw new ArgumentNullException(nameof(propertyInfo));
            }

            var    propertyType  = propertyInfo.PropertyType;
            var    typeConverter = s_typeConverterFactory.GetTypeConverter(propertyType);
            object targetValue;

            if (propertyType.IsNullableEnum() || propertyType.IsEnum)
            {
                var enumConverter = (EnumConverter)typeConverter;
                targetValue = enumConverter.Convert(propertyType, newValue);
            }
            else
            {
                targetValue = typeConverter.Convert(newValue);
            }

            var setter = GetOrCreateSetter(instance);

            setter(instance, propertyInfo.Name, targetValue);
        }
Beispiel #2
0
        public void SetValue(object instance, object value)
        {
            var    propertyType  = this.PropertyInfo.PropertyType;
            var    typeConverter = s_typeConverterFactory.GetTypeConverter(propertyType);
            object targetValue;

            if (propertyType.IsNullableEnum() || propertyType.IsEnum)
            {
                var enumConverter = (EnumConverter)typeConverter;
                targetValue = enumConverter.Convert(propertyType, value);
            }
            else
            {
                targetValue = typeConverter.Convert(value);
            }

            this._setter(instance, targetValue);
        }
 public TypeConverterMapper(Type fromType, Type toType)
     : base(fromType, toType)
 {
     fromTypeConverter = TypeConverterFactory.GetTypeConverter(fromType);
     toConverter       = TypeConverterFactory.GetTypeConverter(toType);
 }