コード例 #1
0
 public void TestCollectionConverterElementType()
 {
     Assert.AreEqual(typeof(int), CollectionConverter.GetElementType(typeof(int[])));
     Assert.AreEqual(typeof(int), CollectionConverter.GetElementType(typeof(List <int>)));
     Assert.AreEqual(typeof(int?), CollectionConverter.GetElementType(typeof(List <int?>)));
     Assert.AreEqual(typeof(string), CollectionConverter.GetElementType(typeof(ArrayList)));
 }
コード例 #2
0
        public void TestEmptyCollection(Type expectedType)
        {
            var converter = new CollectionConverter();
            var result    = converter.ConvertFromString("", CULTURE, expectedType);

            Assert.AreEqual(expectedType, result.GetType());
            Assert.IsNotNull(result);
            Assert.AreEqual(0, ((IList)result).Count);
        }
コード例 #3
0
        public void TestCollectionWithElementConversion(Type expectedType)
        {
            var converter = new CollectionConverter(" ", new NumberConverter());
            var result    = converter.ConvertFromString("1 2 3 4 5", CULTURE, expectedType);

            Assert.AreEqual(expectedType, result.GetType());
            var arr = (IList)result;

            Assert.AreEqual(5, arr.Count);
            Assert.AreEqual(1, arr[0]);
            Assert.AreEqual(3, arr[2]);
            Assert.AreEqual(5, arr[4]);
        }
コード例 #4
0
        public void TestCollectionConversion(Type expectedType, string separator)
        {
            var converter = new CollectionConverter(separator);
            var result    = converter.ConvertFromString(string.Join(separator, new[] { "1", "2", "3", "4", "5" }), CULTURE, expectedType);

            Assert.AreEqual(expectedType, result.GetType());
            var arr = (IList)result;

            Assert.AreEqual(5, arr.Count);
            Assert.AreEqual("1", arr[0]);
            Assert.AreEqual("3", arr[2]);
            Assert.AreEqual("5", arr[4]);
        }
コード例 #5
0
 public IConverter GetConverter(Type type)
 {
     if (!CollectionConverter.CanConvertFrom(type))
     {
         throw new InvalidOperationException(string.Format("{0} can convert only collections that implements IList", typeof(CollectionConverter).Name));
     }
     if (ElementConverterType == null)
     {
         return(new CollectionConverter(elementSeparator, Converters.GetConverterForType(CollectionConverter.GetElementType(type), ElementFormatString)));
     }
     if (!typeof(IConverter).IsAssignableFrom(ElementConverterType))
     {
         throw new InvalidOperationException(string.Format("'{0}' is not valid converter type (does not implement {1})", ElementConverterType.Name, typeof(IConverter).Name));
     }
     return(CreateConverter());
 }
コード例 #6
0
ファイル: Converters.cs プロジェクト: Vihrastik/console-tools
 /// <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);
 }