예제 #1
0
        public object Map(ValueConverterArgs e)
        {
            var values     = e.Input.Split(',');
            var converters = e.OtherConverters.ToArray();

            var targetType = e.Target.IsGenericType
                                ? e.Target.GetGenericArguments()[0]
                                : e.Target.GetElementType();

            var converter = converters
                            .First(c => c.CanMap(targetType));

            var convertedValues = values
                                  .Select(val => converter.Map(new ValueConverterArgs(e.Logger, converters, targetType, val)));

            if (IsIEnumerable(e.Target))
            {
                return(CastArray(targetType, convertedValues.ToArray()));
            }

            if (e.Target.IsArray)
            {
                return(CastArray(targetType, convertedValues.ToArray()));
            }

            if (IsList(e.Target))
            {
                return(GenerateList(targetType, convertedValues));
            }

            throw new NotSupportedException($"Unable to cast to '{e.Target.Name}', as only arrays, IEnumerable<T> an IList<T> are supported at the moment");
        }
예제 #2
0
        public object Map(ValueConverterArgs e)
        {
            try
            {
                var value = Enum.Parse(e.Target, e.Input, ignoreCase: true);

                return(Enum.IsDefined(e.Target, value)
                                        ? value
                                        : null);
            }
            catch (ArgumentException)
            {
                return(null);
            }
        }
예제 #3
0
        public object Map(ValueConverterArgs e)
        {
            if (string.IsNullOrEmpty(e.Input))
            {
                return(null);
            }

            var wrappedType     = e.Target.GetGenericArguments().Single();
            var otherConverters = e.OtherConverters.ToArray();

            var converter = otherConverters.First(c => c.CanMap(wrappedType));
            var value     = converter.Map(new ValueConverterArgs(e.Logger, otherConverters, wrappedType, e.Input));

            return(value);
        }
예제 #4
0
 public object Map(ValueConverterArgs e)
 {
     return(_convert(e.Input));
 }
예제 #5
0
 public object Map(ValueConverterArgs e)
 {
     return(Convert.ChangeType(e.Input, e.Target));
 }