示例#1
0
 public IConverter GetConverter(Type type)
 {
     if (!TimeSpanConverter.CanConvertTo(type))
     {
         throw new InvalidOperationException(string.Format("{0} can convert strings only to TimeSpan type", typeof(TimeSpanConverter).Name));
     }
     return(new TimeSpanConverter(format));
 }
示例#2
0
 /// <summary>
 /// Возвращает один из предустановленных конвертеров для преобразования значений типа <paramref name="type"/> из строк.
 /// </summary>
 /// <param name="type">Тип значения для преобразования.</param>
 /// <param name="format">Используемый формат преобразования. Если не задан, используется формат по умолчанию.</param>
 public static IConverter GetConverterForType(Type type, string format = "")
 {
     type = Nullable.GetUnderlyingType(type) ?? type;
     if (BooleanConverter.CanConvertTo(type))
     {
         return(new BooleanConverter());
     }
     if (TransparentConverter.CanConvertTo(type))
     {
         return(TransparentConverter.Instance);
     }
     if (NumberConverter.CanConvertTo(type))
     {
         return(new NumberConverter());
     }
     if (DecimalConverter.CanConvertTo(type))
     {
         return(new DecimalConverter());
     }
     if (TimeSpanConverter.CanConvertTo(type))
     {
         return(new TimeSpanConverter(format));
     }
     if (DateTimeConverter.CanConvertTo(type))
     {
         return(new DateTimeConverter(format));
     }
     if (EnumConverter.CanConvertTo(type))
     {
         return(new EnumConverter());
     }
     if (CollectionConverter.CanConvertFrom(type))
     {
         return(new CollectionConverter(GetConverterForType(CollectionConverter.GetElementType(type), format)));
     }
     throw new InvalidOperationException("failed to find suitable converter for type " + type);
 }