コード例 #1
0
 public ConversionResult Convert(ConversionContext conversion)
 {
     if (conversion.HasValue==false)
         return null;
     if(conversion.Is<DateTime?>())
     {
         return conversion.Result(conversion.Value.As<DateTime?>().Value.ToUniversalTime());
     }
     return conversion.Result(conversion.Value.As<DateTime>().ToUniversalTime());
 }
コード例 #2
0
        public ConversionResult Convert(ConversionContext conversion)
        {
            if (conversion.HasValue==false)
                return conversion.Unconverted();

            var converter=new NullableConverter(typeof(Nullable<>).MakeGenericType(conversion.GetType()));
            return conversion.Result(converter.ConvertTo(conversion, converter.UnderlyingType));
        }
コード例 #3
0
ファイル: SystemConverter.cs プロジェクト: sotulana/ditto
        public ConversionResult Convert(ConversionContext conversion)
        {
            try
            {
                if (IsConvertible(conversion))
                    return conversion.Unconverted();
                var destPropType = conversion.DestinationPropertyType;
                if (destPropType.IsNullableType() && conversion.HasValue)
                    destPropType = new NullableConverter(destPropType).UnderlyingType;

                return conversion.Result(System.Convert.ChangeType(conversion.Value, destPropType));
            }
            catch(InvalidCastException)
            {
                //gulp
                return conversion.Unconverted();
            }
        }
コード例 #4
0
        private ConversionResult TryListConversion(ConversionContext context)
        {
            var collectionTypeSpec = new SupportedCollectionTypeSpecification();
            if (collectionTypeSpec.IsSatisfiedBy(context.DestinationPropertyType) == false || collectionTypeSpec.IsSatisfiedBy(context.Value)==false)
                return context.Unconverted();

            var destColl = (IList)activate.CreateCollectionInstance(context.DestinationPropertyType,collectionTypeSpec.GetLength(context.Value));
            var destElement = context.DestinationPropertyType.ElementType();
            var srcList = (IEnumerable) context.Value;
            var enumerator = srcList.GetEnumerator();
            int index = 0;
            while(enumerator.MoveNext())
            {
                object element = enumerator.Current ?? destElement.DefaultValue();
                destColl.AddElement(element,index++);
            }
            return context.Result(destColl);
        }
コード例 #5
0
        public ConversionResult Convert(ConversionContext conversion)
        {
            if (conversion.HasValue == false || conversion.ValueType == conversion.DestinationPropertyType)
                return conversion.Result(conversion.Value);

            ConversionResult result = conversion.Unconverted();
            var attempts = new Func<ConversionContext, ConversionResult>[]
                                                                       {
                                                                           TryListConversion,
                                                                           TryNullableConversion,
                                                                           TrySystemConversion
                                                                       };
            foreach (var attempt in attempts)
            {
                result = attempt(conversion);
                if(result is Unconverted)
                    continue;
                return result;
            }

            return result;
        }
コード例 #6
0
ファイル: NullConverter.cs プロジェクト: sotulana/ditto
 public ConversionResult Convert(ConversionContext conversion)
 {
     return conversion.Result(conversion.DestinationPropertyType.DefaultValue());
 }
コード例 #7
0
 public ConversionResult Convert(ConversionContext conversion)
 {
     return(conversion.Result(DateTime.Parse(conversion.Value.ToString())));
 }
コード例 #8
0
 public ConversionResult Convert(ConversionContext conversion)
 {
     return(conversion.Result(conversion.HasValue?conversion.Value.ToString():null));
 }
コード例 #9
0
 public ConversionResult Convert(ConversionContext conversion)
 {
     return conversion.Result(DateTime.Parse(conversion.Value.ToString()));
 }
コード例 #10
0
 public ConversionResult Convert(ConversionContext conversion)
 {
     return conversion.Result(conversion.HasValue?conversion.Value.ToString():null);
 }