/// <summary>
 /// Performs post-deserialization actions.
 /// </summary>
 /// <param name="sender"></param>
 public virtual void OnDeserialization(object sender)
 {
     if (provider == null || provider.GetType() == typeof(AdvancedConverterProvider))
     {
         provider = AdvancedConverterProvider.Default;
     }
 }
 /// <summary>
 /// Deserializes the instance of this class.
 /// </summary>
 /// <param name="info">Serialization info.</param>
 /// <param name="context">Streaming context.</param>
 public AdvancedConverter(SerializationInfo info, StreamingContext context)
     : base(info, context)
 {
     Provider = Implementation.Provider;
     Convert  = Implementation.Convert;
     IsRough  = Implementation.IsRough;
 }
        // Constructos

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        /// <param name="implementation">Advanced converter to provide the delegates for.</param>
        public AdvancedConverter(IAdvancedConverter <TFrom, TTo> implementation)
            : base(implementation)
        {
            Provider = Implementation.Provider;
            Convert  = Implementation.Convert;
            IsRough  = Implementation.IsRough;
        }
        // Constructors

        public EnumAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
            // Checking types
            Type toType   = typeof(TTo);
            Type fromType = typeof(TFrom);

            if (!toType.IsEnum && !fromType.IsEnum)
            {
                throw new InvalidOperationException();
            }
            intermediateConverter2 = provider.GetConverter <TUnderlyingFrom, TUnderlyingTo>();
        }
예제 #5
0
        public void ConverterTest()
        {
            IAdvancedConverterProvider      provider = AdvancedConverterProvider.Default;
            AdvancedConverter <int, string> intStringAdvancedConverter = provider.GetConverter <int, string>();

            Assert.AreEqual("Int32AdvancedConverter", intStringAdvancedConverter.Implementation.GetType().Name);
            Assert.IsTrue(!(intStringAdvancedConverter.IsRough));
            Assert.IsFalse(intStringAdvancedConverter.IsRough);
            int    intValue         = 1234;
            string intToStringValue = intStringAdvancedConverter.Convert(intValue);

            TestLog.Info("IntToString: {0} {1}", intValue, intToStringValue);
            Assert.AreEqual(intValue.ToString(), intToStringValue);
        }
        // Constructors

        public EnumAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
            Type toType   = typeof(TTo);
            Type fromType = typeof(TFrom);

            if (!toType.IsEnum && !fromType.IsEnum)
            {
                throw new InvalidOperationException();
            }
            if (!typeof(TFrom).IsEnum)
            {
                inputValueTypeAdvancedConverter = provider.GetConverter <TFrom, TIntermediate>();
            }
            if (!typeof(TTo).IsEnum)
            {
                outputValueTypeAdvancedConverter = provider.GetConverter <TIntermediate, TTo>();
            }
        }
예제 #7
0
        // Constructors

        public UInt64RoughAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
예제 #8
0
 public TestClassAdvancedConverter(IAdvancedConverterProvider provider)
     : base(provider)
 {
 }
        // Constructors

        public Int64AdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
            baseDateTimeTicks = provider.BaseTime.Ticks;
        }
        // Constructors

        public DecimalAdvancedConverter(IAdvancedConverterProvider provider) : base(provider)
        {
        }
        // Constructors

        public ObjectAdvancedConverterFactory(IAdvancedConverterProvider provider)
        {
            this.provider = provider;
        }
예제 #12
0
        // Constructors

        public StringAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        public NullableAdvancedConverterFactory(IAdvancedConverterProvider provider)
        {
            this.provider = provider;
        }
        // Constructors

        public EnumAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        protected RoughAdvancedConverterBase(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        /// <summary>
        /// Initializes a new instance of this type.
        /// </summary>
        /// <param name="provider">The provider this advanced converter is bound to.</param>
        public AdvancedConverterBase(IAdvancedConverterProvider provider)
        {
            ArgumentValidator.EnsureArgumentNotNull(provider, "provider");
            this.provider = provider;
        }
예제 #17
0
        // Constructors

        public ObjectToBaseAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
예제 #18
0
        // Constructors

        protected StrictAdvancedConverterBase(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
예제 #19
0
        // Constructors

        public TimeSpanAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        public SByteRoughAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        public DoubleAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        /// <summary>
        /// Creates new instance of <see cref="WrappingAdvancedConverter{TFrom,TFromBase,TTo,TToBase}"/>.
        /// </summary>
        /// <param name="provider">Converter provider this converter is bound to.</param>
        public WrappingAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
            BaseConverter = provider.GetConverter <TFromBase, TToBase>();
        }
        // Constructors

        public GuidAdvancedConverter(IAdvancedConverterProvider provider) : base(provider)
        {
        }
예제 #24
0
        // Constructors

        public DecimalRoughAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
            baseDateTimeTicks = provider.BaseTime.Ticks;
        }
        // Constructors

        public ObjectToDescendantAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        public BooleanAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        public Int32RoughAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
예제 #28
0
        // Constructors

        public NullableForwardAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
        // Constructors

        public NullableReverseAdvancedConverter(IAdvancedConverterProvider provider)
            : base(provider)
        {
        }
예제 #30
0
        // Constructors

        public EnumAdvancedConverterFactory(IAdvancedConverterProvider provider)
        {
            this.provider = provider;
        }