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 (int i = 0;; i++) { IArrayValueProvider elementArray; if (!values.TryGetValue(i, out elementArray)) { break; } TKey elementKey; if (elementArray.TryGetValue(0, out elementKey)) { TValue 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) { 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.ToArray()); }
public void ApplyTo(T obj, IObjectValueProvider valueProvider) { IObjectValueProvider propertyProvider; if (valueProvider.TryGetValue(_property.Property.Name, out propertyProvider)) { var value = _converter.GetObject(propertyProvider); 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); } } } } _property.Set(obj, value); } }
public void Should_map_an_anonymous_object_to_the_settings() { var converterCache = new DynamicObjectConverterCache(new DynamicImplementationBuilder()); var cache = new DictionaryConverterCache(); var source = new { Host = "localhost", VirtualHost = "vortex", Username = "******", Password = "******", Port = 5672, }; IDictionaryConverter converter = cache.GetConverter(source.GetType()); IDictionary <string, object> dictionary = converter.GetDictionary(source); IObjectConverter objectConverter = converterCache.GetConverter(typeof(RabbitMqSettings)); var settings = (RabbitMqSettings)objectConverter.GetObject(dictionary); Assert.IsNotNull(settings); Assert.AreEqual("localhost", settings.Host); Assert.AreEqual("vortex", settings.VirtualHost); Assert.AreEqual("joe", settings.Username); Assert.AreEqual("guess", settings.Password); Assert.AreEqual(5672, settings.Port); Assert.AreEqual(0, settings.Heartbeat); Assert.IsNull(settings.Options); }
public void Should_round_trip_successfully() { var factory = new DynamicObjectConverterCache(new DynamicImplementationBuilder()); IObjectConverter converter = factory.GetConverter(typeof(Values)); var values = (Values)converter.GetObject(_dictionary); Assert.IsNotNull(values); Assert.AreEqual(_expected.DateTimeValue, values.DateTimeValue); Assert.AreEqual(_expected.IntValue, values.IntValue); Assert.AreEqual(_expected.NullableValue, values.NullableValue); Assert.AreEqual(_expected.NullableDecimalValue, values.NullableDecimalValue); Assert.AreEqual(_expected.Names.Length, values.Names.Length); Assert.AreEqual(_expected.Names[0], values.Names[0]); Assert.AreEqual(_expected.Names[1], values.Names[1]); Assert.AreEqual(_expected.Names[2], values.Names[2]); Assert.AreEqual(_expected.SubValues.Length, values.SubValues.Length); Assert.AreEqual(_expected.SubValues[0].Text, values.SubValues[0].Text); Assert.AreEqual(_expected.Strings, values.Strings); Assert.AreEqual(_expected.StringSubValues.Count, values.StringSubValues.Count); Assert.AreEqual(_expected.StringSubValues["A"].Text, values.StringSubValues["A"].Text); Assert.AreEqual(_expected.StringSubValues["B"].Text, values.StringSubValues["B"].Text); }
public bool TryGetSettings <T>(out T settings) where T : ISettings { IObjectConverter converter = _converterCache.GetConverter(typeof(T)); var provider = new ConfigurationObjectValueProvider(_configurationProvider); settings = (T)converter.GetObject(provider); return(true); }
public static object GetObject(this IObjectConverter converter, IDictionary <string, object> dictionary) { return(converter.GetObject(new DictionaryObjectValueProvider(dictionary))); }