예제 #1
0
 public void Write(ISerializerWriter writer, JsonSerializeSetting setting, InvestModel model, byte level)
 {
     writer.Write("{");
     writer.Write("Amount:");
     writer.Write(model.Amount.ToString());
     writer.Write("}");
 }
예제 #2
0
        /// <summary>
        /// 写入流中
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="setting">The setting.</param>
        /// <param name="level"></param>
        /// <param name="array">The array.</param>
        public virtual void Write(ISerializerWriter writer, JsonSerializeSetting setting, byte level, IEnumerable array)
        {
            if (array == null)
            {
                if (setting.WriteNullWhenObjectIsNull)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("[]");
                }

                return;
            }

            writer.Write("[");
            var  enumerator = array.GetEnumerator();
            bool moveNext   = enumerator.MoveNext();

            while (moveNext)
            {
                var item = enumerator.Current;
                SerialierBuilderHelper.QueryBuilderInvoker(item.GetType())(writer, setting, item, level++);
                if (moveNext = enumerator.MoveNext())
                {
                    writer.Write(",");
                }
            }
            writer.Write("]");
            return;
        }
예제 #3
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, Nullable <T> source)
        {
            if (source.HasValue)
            {
                if (setting.WriteNumberOnEnumType)
                {
                    if (setting.WriteQuoteWhenObjectIsNumber)
                    {
                        writer.Write("\"");
                        MethodProviders.EnumMethodProvider <T> .Default.Write(writer, setting, source.Value);

                        writer.Write("\"");
                    }
                    else
                    {
                        MethodProviders.EnumMethodProvider <T> .Default.Write(writer, setting, source.Value);
                    }
                }
                else
                {
                    writer.Write("\"");
                    MethodProviders.EnumMethodProvider <T> .Default.Write(writer, setting, source.Value);

                    writer.Write("\"");
                }

                return;
            }

            writer.Write("null");
        }
예제 #4
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, string source)
        {
            /*要进行转义的*/
            if (source == null)
            {
                if (setting.WriteNullWhenObjectIsNull)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("\"\"");
                }
                return;
            }
            else if (source.Length == 0)
            {
                writer.Write("\"\"");
                return;
            }

            writer.Write("\"");
            for (var i = 0; i < source.Length; i++)
            {
                CharMethodProvider.Default.Write(writer, setting, source[i]);
            }
            writer.Write("\"");
        }
예제 #5
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, bool?source)
        {
            if (source.HasValue)
            {
                if (setting.WriteNumberOnBoolenType)
                {
                    if (setting.WriteQuoteWhenObjectIsNumber)
                    {
                        writer.Write("\"");
                        MethodProviders.BooleanMethodProvider.Default.Write(writer, setting, source.Value);
                        writer.Write("\"");
                    }
                    else
                    {
                        MethodProviders.BooleanMethodProvider.Default.Write(writer, setting, source.Value);
                    }
                }
                else
                {
                    writer.Write("\"");
                    MethodProviders.BooleanMethodProvider.Default.Write(writer, setting, source.Value);
                    writer.Write("\"");
                }

                return;
            }

            writer.Write("null");
        }
예제 #6
0
        /// <summary>
        /// 比较深度
        /// </summary>
        /// <param name="setting"></param>
        /// <param name="source"></param>
        /// <param name="writer"></param>
        /// <param name="level"></param>
        /// <returns></returns>
        internal static bool CallSerializeMaxDepthCompare <T>(ISerializerWriter writer, JsonSerializeSetting setting, T source, byte level)
        {
            if (setting.MaxDepth == 0)
            {
                return(level <= 100);
            }

            return(setting.MaxDepth > level);
        }
예제 #7
0
        /// <summary>
        /// 写入流中
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="setting">The setting.</param>
        /// <param name="level"></param>
        /// <param name="array">The array.</param>
        public virtual void WriteObjectValue(ISerializerWriter writer, JsonSerializeSetting setting, byte level, IDictionary <Key, object> array)
        {
            if (array == null)
            {
                if (setting.WriteNullWhenObjectIsNull)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("{}");
                }

                return;
            }

            if (array.Count == 0)
            {
                writer.Write("{}");
                return;
            }

            writer.Write("{");
            var i = -1;

            foreach (var a in array)
            {
                i++;
                ZzzZzSerialierBuilder <Key> .Register(setting).Invoke(writer, setting, a.Key, level++);

                writer.Write(":");

                if (a.Value == null)
                {
                    if (setting.WriteNullWhenObjectIsNull)
                    {
                        writer.Write("null");
                    }
                    else
                    {
                        writer.Write("{}");
                    }
                }
                else
                {
                    SerialierBuilderHelper.QueryBuilderInvoker(a.Value.GetType()).Invoke(writer, setting, a.Value, level++);
                }

                if (i < array.Count - 1)
                {
                    writer.Write(",");
                }
            }

            writer.Write("}");
            return;
        }
 private HyperstoreSerializer(IDomainModel domain, SerializationSettings settings)
 {
     Contract.Requires(domain, "domain");
     _domain     = domain;
     _options    = settings.Options;
     _schema     = settings.Schema;
     _serializer = settings.Serializer;
     _writer     = HasOption(SerializationOptions.Json) ? (ISerializerWriter) new JsonWriter(_options, domain) : new XmlWriter(_options, domain);
 }
예제 #9
0
        /// <summary>
        /// 执行builder,反射用到的
        /// </summary>
        /// <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 CallObjectBuilderInvoke(ISerializerWriter writer, JsonSerializeSetting setting, object source, byte level)
        {
            if (source == null)
            {
                writer.Write("null");
                return;
            }

            QueryBuilderInvoker(source.GetType()).Invoke(writer, setting, source, level++);
        }
예제 #10
0
        /// <summary>
        /// 执行builder,反射用到的
        /// </summary>
        /// <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 CallNullablePrimitiveBuilderInvoke <T>(ISerializerWriter writer, JsonSerializeSetting setting, Nullable <T> source, byte level) where T : struct
        {
            if (!source.HasValue)
            {
                writer.Write("null");
                return;
            }

            ZzzZzSerialierBuilder <T> .Register(setting).Invoke(writer, setting, source.Value, level);
        }
예제 #11
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, long source)
        {
            if (source == long.MinValue)
            {
                writer.Write("-9223372036854775808");
                return;
            }

            if (source == long.MaxValue)
            {
                writer.Write("9223372036854775807");
                return;
            }

            var target = source;

            if (source < 0)
            {
                writer.Write('-');
                target = -target;
            }

            char[] buffer = null;
            /*long的最大长度为19,加一个负数符号*/
            var maxlength = "9223372036854775807".Length;

            buffer = new char[maxlength + 1];
            var lessen = 0L;
            KeyValuePair <char, char> item;

            do
            {
                lessen                = target % 100;
                item                  = ZeroToHundred[lessen];
                buffer[maxlength]     = item.Value;
                buffer[maxlength - 1] = item.Key;
                maxlength            -= 2;
                target                = (target / 100);
            } while (target != 0);

            if (item.Key == '0')
            {
                writer.Write(buffer, maxlength + 2);
                return;
            }

            writer.Write(buffer, maxlength + 1);
            return;

            //var digitlength = GetDigitLength(source);
            //buffer = new char[digitlength];
            //WriteIntoChar(buffer, source, digitlength, 0);
            //writer.Write(buffer);
        }
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source"></param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, DateTime source)
        {
            char[] buffer = null;
            buffer = new char[24];
            var item = ZeroToHundred[source.Year % 100];

            buffer[2] = item.Key;
            buffer[3] = item.Value;
            item      = ZeroToHundred[source.Year / 100];
            buffer[0] = item.Key;
            buffer[1] = item.Value;

            buffer[4] = '-';

            item      = ZeroToHundred[source.Month];
            buffer[5] = item.Key;
            buffer[6] = item.Value;

            buffer[7] = '-';

            item      = ZeroToHundred[source.Day];
            buffer[8] = item.Key;
            buffer[9] = item.Value;

            buffer[10] = 'T';

            item       = ZeroToHundred[source.Hour];
            buffer[11] = item.Key;
            buffer[12] = item.Value;

            buffer[13] = ':';

            item       = ZeroToHundred[source.Minute];
            buffer[14] = item.Key;
            buffer[15] = item.Value;

            buffer[16] = ':';

            item       = ZeroToHundred[source.Second];
            buffer[17] = item.Key;
            buffer[18] = item.Value;

            buffer[19] = '.';

            item       = ZeroToHundred[source.Millisecond % 100];
            buffer[20] = item.Key;
            buffer[21] = item.Value;
            item       = ZeroToHundred[source.Millisecond / 100];
            buffer[22] = item.Key;
            buffer[23] = 'Z';

            writer.Write(buffer);
            return;
        }
예제 #13
0
 /// <summary>
 /// 从对象中写入流中
 /// </summary>
 /// <param name="writer">写入流</param>
 /// <param name="setting">配置项</param>
 /// <param name="source">源数据</param>
 public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, Type source)
 {
     if (setting.WriteVersionOnTypeInfo)
     {
         writer.Write(source.AssemblyQualifiedName);
     }
     else
     {
         writer.Write(Regex.Replace(source.AssemblyQualifiedName, "\\s+version=(.*?),", "", RegexOptions.IgnoreCase));
     }
 }
예제 #14
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, TimeSpan?source)
        {
            if (source.HasValue)
            {
                writer.Write("\"");
                MethodProviders.TimeSpanMethodProvider.Default.Write(writer, setting, source.Value);
                writer.Write("\"");
                return;
            }

            writer.Write("null");
        }
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, DateTime?source)
        {
            if (source.HasValue)
            {
                writer.Write("\"");
                MethodProviders.DateTimes.ChineseStyleDateMethodProvider.Default.Write(writer, setting, source.Value);
                writer.Write("\"");
                return;
            }

            writer.Write("null");
        }
예제 #16
0
 /// <summary>
 /// 从对象中写入流中
 /// </summary>
 /// <param name="writer">写入流</param>
 /// <param name="setting">配置项</param>
 /// <param name="source">源数据</param>
 public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, bool source)
 {
     if (setting.WriteNumberOnBoolenType)
     {
         writer.Write(source ? "1" : "0");
     }
     else
     {
         writer.Write(source ? "true" : "false");
     }
     return;
 }
예제 #17
0
        /// <summary>
        /// 序列化对象
        /// </summary>
        /// <param name="object">源对象</param>
        /// <param name="setting">配置</param>
        /// <param name="writer">写入流</param>
        /// <returns></returns>
        private static void Serialize(object @object, JsonSerializeSetting setting, ISerializerWriter writer)
        {
            if (@object == null)
            {
                writer.Write("null");
                return;
            }

            var @delegate = SerialierBuilderHelper.QueryBuilderInvoker(@object.GetType());

            @delegate(writer, setting, @object, 0);
        }
예제 #18
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, byte source)
        {
            char[] buffer = new char[3];
            var    it     = ZeroToHundred[source % 100];

            buffer[2] = it.Value;
            buffer[1] = it.Key;
            if (source < 10)
            {
                writer.Write(buffer, 2);
                return;
            }
            if (source < 100)
            {
                writer.Write(buffer, 1);
                return;
            }

            buffer[0] = ZeroToHundred[source / 100].Value;
            writer.Write(buffer);
            return;

            //char[] buffer = null;
            /*ushort的最大长度为5*/
            //var maxlength = "255".Length;
            //buffer = new char[maxlength + 1];
            //byte lessen = 0;
            //Tuple<char, char> item;
            //do
            //{
            //    lessen = (byte)(source % 100);
            //    item = ZeroToHundred[lessen];
            //    buffer[maxlength] = item.Item2;
            //    buffer[maxlength - 1] = item.Item1;
            //    maxlength -= 2;
            //    source = (byte)(source / 100);
            //} while (source != 0);

            //if (item.Item1 == '0')
            //{
            //    writer.Write(buffer, maxlength + 2);
            //    return;
            //}

            //writer.Write(buffer, maxlength + 1);
            //return;

            //var digitlength = GetDigitLength(source);
            //buffer = new char[digitlength];
            //WriteIntoChar(buffer, source, digitlength, 0);
            //writer.Write(buffer);
        }
예제 #19
0
        /// <summary>
        /// 序列化对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="object">源对象</param>
        /// <param name="setting">配置</param>
        /// <param name="writer">写入流</param>
        /// <returns></returns>
        private static void Serialize <T>(T @object, JsonSerializeSetting setting, ISerializerWriter writer)
        {
            /*object*/
            if (typeof(T) == typeof(object))
            {
                Serialize((object)@object, setting, writer);
                return;
            }

            var build = ZzzZzSerialierBuilder <T> .Register(setting);

            build(writer, setting, @object, 0);
        }
        /// <summary>
        /// 写入流中
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="setting">The setting.</param>
        /// <param name="array">The array.</param>
        public virtual void WriteString(ISerializerWriter writer, JsonSerializeSetting setting, IEnumerable <T> array)
        {
            if (array == null)
            {
                if (setting.WriteNullWhenObjectIsNull)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("[]");
                }

                return;
            }

            var provider = this.MethodProvider;
            var list     = array as IList <T>;

            if (list != null)
            {
                writer.Write("[");
                for (var i = 0; i < list.Count; i++)
                {
                    provider.Write(writer, setting, list[i]);
                    if (i < list.Count - 1)
                    {
                        writer.Write(",");
                    }
                }
                writer.Write("]");
                return;
            }

            writer.Write("[");
            var enumerator = array.GetEnumerator();

            if (enumerator.MoveNext())
            {
                provider.Write(writer, setting, enumerator.Current);
            }

            while (enumerator.MoveNext())
            {
                writer.Write(",");
                provider.Write(writer, setting, enumerator.Current);
            }

            writer.Write("]");
            return;
        }
예제 #21
0
        /// <summary>
        /// 写入流中
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="setting">The setting.</param>
        /// <param name="level"></param>
        /// <param name="array">The array.</param>
        public virtual void Write(ISerializerWriter writer, JsonSerializeSetting setting, byte level, IEnumerable <T> array)
        {
            if (array == null)
            {
                if (setting.WriteNullWhenObjectIsNull)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("[]");
                }

                return;
            }

            var list = array as IList <T>;

            if (list != null)
            {
                writer.Write("[");
                for (var i = 0; i < list.Count; i++)
                {
                    ZzzZzSerialierBuilder <T> .Register(setting).Invoke(writer, setting, list[i], level++);

                    if (i < list.Count - 1)
                    {
                        writer.Write(",");
                    }
                }
                writer.Write("]");
                return;
            }

            writer.Write("[");
            var enumerator = array.GetEnumerator();

            if (enumerator.MoveNext())
            {
                ZzzZzSerialierBuilder <T> .Register(setting).Invoke(writer, setting, enumerator.Current, level++);
            }
            while (enumerator.MoveNext())
            {
                writer.Write(",");
                ZzzZzSerialierBuilder <T> .Register(setting).Invoke(writer, setting, enumerator.Current, level++);
            }
            writer.Write("]");
            return;
        }
예제 #22
0
        /// <summary>
        /// 写入流中
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="setting">The setting.</param>
        /// <param name="level"></param>
        /// <param name="array">The array.</param>
        public virtual void Write(ISerializerWriter writer, JsonSerializeSetting setting, byte level, IDictionary array)
        {
            if (array == null)
            {
                if (setting.WriteNullWhenObjectIsNull)
                {
                    writer.Write("null");
                }
                else
                {
                    writer.Write("{}");
                }

                return;
            }

            if (array.Count == 0)
            {
                writer.Write("{}");
                return;
            }

            writer.Write("{");

            var  enumerator = array.Keys.GetEnumerator();
            bool moveNext   = enumerator.MoveNext();

            while (moveNext)
            {
                SerialierBuilderHelper.QueryBuilderInvoker(enumerator.Current.GetType())(writer, setting, enumerator.Current, level++);
                writer.Write(":");
                var item = array[enumerator.Current];
                SerialierBuilderHelper.QueryBuilderInvoker(item.GetType())(writer, setting, item, level++);
                if (moveNext = enumerator.MoveNext())
                {
                    writer.Write(",");
                }
            }

            writer.Write("}");
            return;
        }
예제 #23
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, ushort?source)
        {
            if (source.HasValue)
            {
                if (setting.WriteQuoteWhenObjectIsNumber)
                {
                    writer.Write("\"");
                    MethodProviders.UInt16MethodProvider.Default.Write(writer, setting, source.Value);
                    writer.Write("\"");
                }
                else
                {
                    MethodProviders.UInt16MethodProvider.Default.Write(writer, setting, source.Value);
                }

                return;
            }

            writer.Write("null");
        }
        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);
        }
예제 #25
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, ulong source)
        {
            if (source == ulong.MinValue)
            {
                writer.Write("0");
                return;
            }

            if (source == ulong.MaxValue)
            {
                writer.Write("18446744073709551615");
                return;
            }

            char[] buffer = null;
            /*ushort的最大长度为10*/
            var maxlength = "18446744073709551615".Length;

            buffer = new char[maxlength + 1];
            ulong lessen = 0;
            KeyValuePair <char, char> item;

            do
            {
                lessen                = source % 100;
                item                  = ZeroToHundred[lessen];
                buffer[maxlength]     = item.Value;
                buffer[maxlength - 1] = item.Key;
                maxlength            -= 2;
                source                = source / 100;
            } while (source != 0);

            if (item.Key == '0')
            {
                writer.Write(buffer, maxlength + 2);
                return;
            }

            writer.Write(buffer, maxlength + 1);
            return;
        }
예제 #26
0
        private void WriteQuote(ISerializerWriter writer, JsonSerializeSetting setting, byte level, IEnumerable <T> array)
        {
            var list = array as IList <T>;

            if (list != null)
            {
                writer.Write("[");
                for (var i = 0; i < list.Count; i++)
                {
                    writer.Write("\"");
                    this.MethodProvider.Write(writer, setting, list[i]);
                    writer.Write("\"");
                    if (i < list.Count - 1)
                    {
                        writer.Write(",");
                    }
                }
                writer.Write("]");
                return;
            }

            writer.Write("[");
            var enumerator = array.GetEnumerator();

            if (enumerator.MoveNext())
            {
                writer.Write("\"");
                this.MethodProvider.Write(writer, setting, enumerator.Current);
                writer.Write("\"");
            }
            while (enumerator.MoveNext())
            {
                writer.Write(",");
                writer.Write("\"");
                this.MethodProvider.Write(writer, setting, enumerator.Current);
                writer.Write("\"");
            }

            writer.Write("]");
            return;
        }
예제 #27
0
        /// <summary>
        /// 从对象中写入流中
        /// </summary>
        /// <param name="writer">写入流</param>
        /// <param name="setting">配置项</param>
        /// <param name="source">源数据</param>
        public override void Write(ISerializerWriter writer, JsonSerializeSetting setting, Guid source)
        {
            var guid = source.ToString();

            if (setting.WriteHorizontalLineOnGuidType)
            {
                writer.Write(guid);
                return;
            }

            /*9c43f081-a003-4b6f-b1fd-a5e8017c6b2b*/

            var buffer = new char[32];

            for (var i = 0; i < 8; i++)
            {
                buffer[i] = guid[i];
            }

            for (var i = 9; i < 13; i++)
            {
                buffer[i - 1] = guid[i];
            }
            for (var i = 14; i < 18; i++)
            {
                buffer[i - 2] = guid[i];
            }
            for (var i = 19; i < 23; i++)
            {
                buffer[i - 3] = guid[i];
            }
            for (var i = 24; i < 36; i++)
            {
                buffer[i - 4] = guid[i];
            }

            writer.Write(buffer);
        }
 public static void Write(ISerializerWriter writer, JsonSerializeSetting setting, char source)
 {
     CharMethodProvider.Default.Write(writer, setting, source);
 }
 public static void Write(ISerializerWriter writer, JsonSerializeSetting setting, bool source)
 {
     BooleanMethodProvider.Default.Write(writer, setting, source);
 }
 public static void WriteKeyValue(ISerializerWriter writer, JsonSerializeSetting setting, IDictionary array, byte level)
 {
     IDictionaryProvider.Default.Write(writer, setting, level, array);
 }