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());
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
 public static object GetObject(this IObjectConverter converter, IDictionary <string, object> dictionary)
 {
     return(converter.GetObject(new DictionaryObjectValueProvider(dictionary)));
 }