Ejemplo n.º 1
0
        /// <summary>
        /// 创建委托
        /// </summary>
        /// <returns></returns>
        public static Func <IDeserializerReader, JsonDeserializeSetting, int, T> Register(JsonDeserializeSetting setting)
        {
            Func <IDeserializerReader, JsonDeserializeSetting, int, T> func = null;

            if (caching.TryGetValue(setting, out func))
            {
                return(func);
            }

            lock (caching)
            {
                if (caching.TryGetValue(setting, out func))
                {
                    return(func);
                }

                var customSerialierBuilder = CustomSerializationProvider.QueryCustomeDeserilizerbuilder <T>();
                if (customSerialierBuilder != null)
                {
                    func = customSerialierBuilder.Build(setting);
                    caching.TryAdd(setting, func);
                    return(func);
                }

                func = new ZzzZzDeserializerBuilder <T>().Build(setting);
                caching.TryAdd(setting, func);
                return(func);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建委托
        /// </summary>
        /// <returns></returns>
        public static Action <ISerializerWriter, JsonSerializeSetting, T, byte> Register(JsonSerializeSetting setting)
        {
            Action <ISerializerWriter, JsonSerializeSetting, T, byte> action = null;

            if (caching.TryGetValue(setting, out action))
            {
                return(action);
            }

            lock (caching)
            {
                if (caching.TryGetValue(setting, out action))
                {
                    return(action);
                }

                var customSerialierBuilder = CustomSerializationProvider.QueryCustomeSerilizerbuilder <T>();
                if (customSerialierBuilder != null)
                {
                    action = customSerialierBuilder.Build(setting);
                    caching.TryAdd(setting, action);
                    return(action);
                }

                action = new ZzzZzSerialierBuilder <T>().Build(setting);
                caching.TryAdd(setting, action);
                return(action);
            }
        }
Ejemplo n.º 3
0
        public static DateTime?DateTimeParse(IDeserializerReader reader, JsonDeserializeSetting setting, string name)
        {
            IConvertMethodProvider <DateTime> customMethodProvider = CustomSerializationProvider.QueryCustomDatetimeFormat(setting.DateTimeFormat) as IConvertMethodProvider <DateTime>;

            if (customMethodProvider == null)
            {
                return(DateTimeMethodProvider.Default.Parse(reader, setting, reader.Read(name), true));
            }

            return(customMethodProvider.Parse(reader, setting, reader.Read(name), true));
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            CustomSerializationProvider cp = new CustomSerializationProvider();

            //for test
            //cp.ISerializable();
            //cp.ISerializationSurrogate();
            //cp.SerializationCallbacks();
            //cp.IDataContractSurrogate();

            Console.ReadKey();
        }
        public static void Write(ISerializerWriter writer, JsonSerializeSetting setting, DateTime source)
        {
            if (DateTimeFormat.Default.Equals(setting.DateTimeFormat))
            {
                ISO8601StyleDateMethodProvider.Default.Write(writer, setting, source);
                return;
            }

            if (DateTimeFormat.ChineseStyle.Equals(setting.DateTimeFormat))
            {
                ChineseStyleDateMethodProvider.Default.Write(writer, setting, source);
                return;
            }

            if (DateTimeFormat.ISO8601Style.Equals(setting.DateTimeFormat))
            {
                ISO8601StyleDateMethodProvider.Default.Write(writer, setting, source);
                return;
            }

            if (DateTimeFormat.MicrosoftStyle.Equals(setting.DateTimeFormat))
            {
                MicrosoftStyleDateMethodProvider.Default.Write(writer, setting, source);
                return;
            }

            if (DateTimeFormat.RFC1123Style.Equals(setting.DateTimeFormat))
            {
                RFC1123StyleDateMethodProvider.Default.Write(writer, setting, source);
                return;
            }

            IConvertMethodProvider <DateTime> customMethodProvider = CustomSerializationProvider.QueryCustomDatetimeFormat(setting.DateTimeFormat) as IConvertMethodProvider <DateTime>;

            if (customMethodProvider == null)
            {
                throw new ArgumentException("format is not defined");
            }

            customMethodProvider.Write(writer, setting, source);
        }
Ejemplo n.º 6
0
            /// <summary>
            /// 创建委托
            /// </summary>
            /// <returns></returns>
            public static Func <IDeserializerReader, JsonDeserializeSetting, int, T> Register(JsonDeserializeSetting setting)
            {
                if (function != null)
                {
                    return(function);
                }

                lock (locker)
                {
                    if (function != null)
                    {
                        return(function);
                    }

                    var customSerialierBuilder = CustomSerializationProvider.QueryCustomeDeserilizerbuilder <T>();
                    if (customSerialierBuilder != null)
                    {
                        return(function = customSerialierBuilder.Build(setting));
                    }

                    return(function = new ExceptionDeseralizerBuilder <T>().Build(setting));
                }
            }
Ejemplo n.º 7
0
            /// <summary>
            /// 进行构建
            /// </summary>
            /// <returns></returns>
            public static Action <ISerializerWriter, JsonSerializeSetting, TException, byte> Register(JsonSerializeSetting setting)
            {
                if (action != null)
                {
                    return(action);
                }

                lock (locker)
                {
                    if (action != null)
                    {
                        return(action);
                    }

                    var customSerialierBuilder = CustomSerializationProvider.QueryCustomeSerilizerbuilder <TException>();
                    if (customSerialierBuilder != null)
                    {
                        return(action = customSerialierBuilder.Build(setting));
                    }

                    return(action = new ExceptionSerialierBuilder <TException>().Build(setting));
                }
            }
Ejemplo n.º 8
0
        /// <summary>
        /// 执行builder,反射用到的
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="writer">The writer.</param>
        /// <param name="setting">The setting.</param>
        /// <param name="level"></param>
        /// <param name="source">The source.</param>
        internal static void CallCustomeBuilderInvoke <T>(ISerializerWriter writer, JsonSerializeSetting setting, T source, byte level)
        {
            var @delegate = CustomSerializationProvider.QueryCustomeSerilizerbuilder <T>().Build(setting);

            @delegate(writer, setting, source, level++);
        }