Ejemplo n.º 1
0
        public TypeConverter TryGet <T>(Type type)
        {
            TypeConverter typeConverter;

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

            if (typeConverterCache.TryGetValue(typeof(T), out typeConverter))
            {
                return(typeConverter);
            }

            typeConverter = typeConverterSource.TryGet <T>(type);

            if (typeConverter != null)
            {
                lock (typeConverterCache)
                    if (!typeConverterCache.ContainsKey(typeof(T)))
                    {
                        typeConverterCache.Add(typeof(T), typeConverter);
                    }
            }

            return(typeConverter);
        }
Ejemplo n.º 2
0
        public T Convert <T>(Object instance)
        {
            if (instance == null)
            {
                return(default(T));
            }

            if (instance == DBNull.Value)
            {
                return(default(T));
            }

            var typeConverter = typeConverterSource.TryGet <T>(instance.GetType());

            if (typeConverter == null)
            {
                throw new TypeConverterNotFoundException(instance.GetType(), typeof(T));
            }

            return(typeConverter.Convert <T>(instance));
        }