public void ApplyTo(T obj, IObjectValueProvider valueProvider) { object value; if (!valueProvider.TryGetValue(_property.Property.Name, out value)) { return; } if (value == null) { return; } if (value is T) { _property.Set(obj, value); return; } var s = value as string; if (s != null) { var enumValue = Enum.Parse(_property.Property.PropertyType, s); _property.Set(obj, enumValue); return; } var n = Enum.ToObject(_property.Property.PropertyType, value); _property.Set(obj, n); }
public void ApplyTo(T obj, IObjectValueProvider valueProvider) { IArrayValueProvider values; if (!valueProvider.TryGetValue(_property.Property.Name, out values)) { return; } var elements = new List <TElement>(); for (var i = 0;; i++) { IObjectValueProvider elementValueProvider; if (!values.TryGetValue(i, out elementValueProvider)) { break; } var element = (TElement)_converter.GetObject(elementValueProvider); elements.Add(element); } _property.Set(obj, elements); }
public void ApplyTo(T obj, IObjectValueProvider valueProvider) { IArrayValueProvider values; if (!valueProvider.TryGetValue(_property.Property.Name, out values)) { return; } var elements = new Dictionary <TKey, TValue>(); for (var i = 0;; i++) { IArrayValueProvider elementArray; if (!values.TryGetValue(i, out elementArray)) { break; } TKey elementKey; if (elementArray.TryGetValue(0, out elementKey)) { var elementValue = default(TValue); IObjectValueProvider elementValueProvider; if (elementArray.TryGetValue(1, out elementValueProvider)) { elementValue = (TValue)_valueConverter.GetObject(elementValueProvider); } elements[elementKey] = elementValue; } } _property.Set(obj, elements); }
public void ApplyTo(T obj, IObjectValueProvider valueProvider) { object value; if (valueProvider.TryGetValue(_property.Property.Name, out value)) { if (value != null) { var valueType = value.GetType(); if (!valueType.IsInstanceOfType(_property.Property.PropertyType)) { if (_typeConverter.IsValid(value)) { if (_typeConverter.CanConvertFrom(valueType)) { value = _typeConverter.ConvertFrom(value); } } } } if (value != null) { _property.Set(obj, value); } } }
public void ApplyTo(T obj, IObjectValueProvider valueProvider) { object value; if (valueProvider.TryGetValue(_property.Property.Name, out value)) { var nullableValue = value as TValue?; if (!nullableValue.HasValue) { var converter = TypeDescriptor.GetConverter(typeof(TValue)); nullableValue = converter.CanConvertFrom(value.GetType()) ? (TValue?)converter.ConvertFrom(value) : null; } _property.Set(obj, nullableValue); } }