DefaultPropertyGetter
Manages conversion between property values.
            
                using System;
using System.ComponentModel;
namespace Castle.Components.DictionaryAdapter
{
    public class DefaultPropertyGetter : IDictionaryPropertyGetter, IDictionaryBehavior
    {
        private readonly TypeConverter converter;
        public int ExecutionOrder => 2147483647;
        public DefaultPropertyGetter(TypeConverter converter)
        {
            this.converter = converter;
        }
        public object GetPropertyValue(IDictionaryAdapter dictionaryAdapter, string key, object storedValue, PropertyDescriptor property, bool ifExists)
        {
            Type propertyType = property.PropertyType;
            if (storedValue != null && !propertyType.IsInstanceOfType(storedValue) && converter != null && converter.CanConvertFrom(storedValue.GetType()))
                return converter.ConvertFrom(storedValue);
            return storedValue;
        }
        public IDictionaryBehavior Copy()
        {
            return this;
        }
    }
}