public static void SerializeObject <T>(T value, TextWriter textWriter)
        {
            using (var jsonSerializer = new JsonDefaultSerializer(DefaultMaxDepth)
            {
                textWriter = textWriter
            })
            {
                ValueInterface <T> .WriteValue(jsonSerializer, value);

                VersionDifferences.WriteChars(
                    textWriter,
                    jsonSerializer.hGlobal.GetPointer(),
                    jsonSerializer.StringLength);
            }
        }
Example #2
0
 public void WriteValue(IValueWriter valueWriter, FSharpOption <T> value)
 {
     if (value is null)
     {
         valueWriter.DirectWrite(null);
     }
     else if (value == FSharpOption <T> .None)
     {
         valueWriter.DirectWrite(null);
     }
     else
     {
         ValueInterface.WriteValue(valueWriter, value.Value);
     }
 }
Example #3
0
        public static async Task SerializeObjectAsync <T>(T value, TextWriter textWriter)
        {
            using (var jsonSerializer = new JsonDefaultSerializer(DefaultMaxDepth)
            {
                textWriter = textWriter
            })
            {
                ValueInterface <T> .WriteValue(jsonSerializer, value);

                await VersionDifferences.WriteCharsAsync(
                    textWriter,
                    jsonSerializer.hGlobal.Address,
                    jsonSerializer.StringLength);
            }
        }
Example #4
0
        internal static void WriteArray(IValueWriter valueWriter, object value, Type type)
        {
            //var items = Underlying.As<Array>(value).Clone();

            //Underlying.GetMethodTablePointer(items) = TypeHelper.GetMethodTablePointer(GetArrayValueType(type));

            //ValueInterface.WriteValue(valueWriter, items);

            var pMethodTableBackup = Underlying.GetMethodTablePointer(value);

            Underlying.GetMethodTablePointer(value) = TypeHelper.GetMethodTablePointer(GetArrayValueType(type));

            ValueInterface.WriteValue(valueWriter, value);

            Underlying.GetMethodTablePointer(value) = pMethodTableBackup;
        }
Example #5
0
        public static void SerializeObject <T>(T value, TextWriter textWriter)
        {
            var hGCache = CharsPool.Rent();

            var jsonSerializer = new JsonSerializer <DefaultSerializeMode>(hGCache, DefaultMaxDepth)
            {
                textWriter = textWriter
            };

            ValueInterface <T> .WriteValue(jsonSerializer, value);

            jsonSerializer.Flush();

            hGCache.WriteTo(textWriter);

            CharsPool.Return(hGCache);
        }
        public void Serialize <T>(T value, TextWriter textWriter)
        {
            using (var jsonSerializer = CreateJsonSerializer())
            {
                if (id != 0)
                {
                    jsonSerializer.jsonFormatter = this;
                }

                ValueInterface <T> .WriteValue((IValueWriter)jsonSerializer, value);

                VersionDifferences.WriteChars(
                    textWriter,
                    jsonSerializer.hGlobal.GetPointer(),
                    jsonSerializer.StringLength);
            }
        }
Example #7
0
        public async Task SerializeAsync <T>(T value, TextWriter textWriter)
        {
            using (var jsonSerializer = CreateJsonSerializer())
            {
                if (id != 0)
                {
                    jsonSerializer.jsonFormatter = this;
                }

                ValueInterface <T> .WriteValue((IValueWriter)jsonSerializer, value);

                await VersionDifferences.WriteCharsAsync(
                    textWriter,
                    jsonSerializer.hGlobal.Address,
                    jsonSerializer.StringLength);
            }
        }
        public string Serialize <T>(T value)
        {
            using (var jsonSerializer = CreateJsonSerializer())
            {
                if (id != 0)
                {
                    jsonSerializer.jsonFormatter = this;
                }

                ValueInterface <T> .WriteValue((IValueWriter)jsonSerializer, value);

                return(new string(
                           jsonSerializer.hGlobal.GetPointer(),
                           0,
                           jsonSerializer.StringLength));
            }
        }
Example #9
0
        public static void SerializeObject <T>(T value, HGlobalCache <char> hGCache, JsonFormatterOptions options)
        {
            if ((options & ReferenceOptions) != 0)
            {
                var jsonSerializer = new JsonSerializer <JsonSerializeModes.ReferenceMode>(options, hGCache, DefaultMaxDepth)
                {
                    References = new JsonReferenceWriter()
                };

                if ((options & JsonFormatterOptions.Indented) != 0)
                {
                    jsonSerializer.IndentedChars  = DefaultIndentedChars;
                    jsonSerializer.LineBreakChars = DefaultLineCharsBreak;
                    jsonSerializer.MiddleChars    = DefaultMiddleChars;
                }

                ValueInterface <T> .WriteValue(jsonSerializer, value);

                jsonSerializer.Flush();
            }
            else if ((options & ComplexOptions) != 0)
            {
                var jsonSerializer = new JsonSerializer <JsonSerializeModes.ComplexMode>(options, hGCache, DefaultMaxDepth);

                if ((options & JsonFormatterOptions.Indented) != 0)
                {
                    jsonSerializer.IndentedChars  = DefaultIndentedChars;
                    jsonSerializer.LineBreakChars = DefaultLineCharsBreak;
                    jsonSerializer.MiddleChars    = DefaultMiddleChars;
                }

                ValueInterface <T> .WriteValue(jsonSerializer, value);

                jsonSerializer.Flush();
            }
            else
            {
                var jsonSerializer = new JsonSerializer <DefaultSerializeMode>(options, hGCache, DefaultMaxDepth);

                ValueInterface <T> .WriteValue(jsonSerializer, value);

                jsonSerializer.Flush();
            }
        }
Example #10
0
        /// <summary>
        /// 在数据写入器中写入该类型的实例。
        /// </summary>
        /// <param name="valueWriter">值写入器</param>
        /// <param name="value">该类型的实例</param>
        public void WriteValue(IValueWriter valueWriter, T value)
        {
            if (value is null)
            {
                valueWriter.DirectWrite(null);
            }
            else if (CheckDerivedInstance && TypeHandle != TypeHelper.GetTypeHandle(value))
            {
                /* 父类引用,子类实例时使用 Type 获取写入器。 */

                ValueInterface.WriteValue(valueWriter, value);
            }
            else
            {
                var objectRW = XObjectRW.Create <T>(GetBindingFlags(valueWriter));

                objectRW.Initialize(value);

                valueWriter.WriteObject(objectRW);
            }
        }
Example #11
0
        /// <summary>
        /// 在数据写入器中写入该类型的实例。
        /// </summary>
        /// <param name="valueWriter">值写入器</param>
        /// <param name="value">该类型的实例</param>
        public void WriteValue(IValueWriter valueWriter, T value)
        {
            if (value == null)
            {
                valueWriter.DirectWrite(null);
            }
            else if (CheckDerivedInstance && TypeHandle != TypeHelper.GetTypeHandle(value))
            {
                /* 父类引用,子类实例时使用 Type 获取写入器。 */

                ValueInterface.WriteValue(valueWriter, value);
            }
            else
            {
                var objectRW = XObjectRW.Create <T>(valueWriter is ITargetedBind targeted && targeted.TargetedId != 0 ? targeted.GetXObjectRWFlags() : XBindingFlags.None);

                objectRW.Initialize(value);

                valueWriter.WriteObject(objectRW);
            }
        }
Example #12
0
        public static byte[] SerializeObject <T>(T value)
        {
            var hGlobal = CacheHelper.RentBytes();

            try
            {
                var serializer = new MessagePackSerializer(
                    DefaultOptions,
                    DefaultMaxDepth,
                    hGlobal
                    );

                ValueInterface <T> .WriteValue(serializer, value);

                serializer.hGlobal.Count = serializer.offset;

                return(serializer.hGlobal.ToBytes());
            }
            finally
            {
                CacheHelper.Return(hGlobal);
            }
        }
Example #13
0
        static void SerializeObject <T, TMode>(T value, HGlobalCache <char> hGCache, TextWriter textWriter, JsonFormatterOptions options) where TMode : struct
        {
            var jsonSerializer = new JsonSerializer <TMode>(hGCache, DefaultMaxDepth, textWriter, options);

            if (typeof(TMode) == typeof(JsonSerializeModes.ReferenceMode))
            {
                jsonSerializer.References = new JsonReferenceWriter();
            }

            if (typeof(TMode) == typeof(JsonSerializeModes.ReferenceMode) || typeof(TMode) == typeof(JsonSerializeModes.ComplexMode))
            {
                if ((options & JsonFormatterOptions.Indented) != 0)
                {
                    jsonSerializer.IndentedChars  = DefaultIndentedChars;
                    jsonSerializer.LineBreakChars = DefaultLineCharsBreak;
                    jsonSerializer.MiddleChars    = DefaultMiddleChars;
                }
            }

            ValueInterface <T> .WriteValue(jsonSerializer, value);

            jsonSerializer.Flush();
        }
Example #14
0
        /// <summary>
        /// 在数据写入器中写入该类型的实例。
        /// </summary>
        /// <param name="valueWriter">值写入器</param>
        /// <param name="value">该类型的实例</param>
        public void WriteValue(IValueWriter valueWriter, T value)
        {
            if (value == null)
            {
                valueWriter.DirectWrite(null);

                return;
            }

            /* 父类引用,子类实例时使用 Type 获取写入器。 */
            if (CheckChildrenInstance && TypeHandle != TypeHelper.GetTypeHandle(value))
            {
                ValueInterface.WriteValue(valueWriter, value);

                return;
            }

            var objectRW = XObjectRW.Create <T>(CurrentBindingFlags);

            objectRW.Initialize(value);

            valueWriter.WriteObject(objectRW);
        }
Example #15
0
        void Serialize <T, TMode>(T value, HGlobalCache <char> hGCache, JsonFormatterOptions options) where TMode : struct
        {
            var jsonSerializer = new JsonSerializer <TMode>(this, hGCache, MaxDepth, options);

            if (typeof(TMode) == typeof(JsonSerializeModes.ReferenceMode))
            {
                jsonSerializer.References = new JsonReferenceWriter();
            }

            if (typeof(TMode) == typeof(JsonSerializeModes.ReferenceMode) || typeof(TMode) == typeof(JsonSerializeModes.ComplexMode))
            {
                if ((options & JsonFormatterOptions.Indented) != 0)
                {
                    jsonSerializer.IndentedChars  = IndentedChars;
                    jsonSerializer.LineBreakChars = LineBreakChars;
                    jsonSerializer.MiddleChars    = MiddleChars;
                }
            }

            ValueInterface <T> .WriteValue(jsonSerializer, value);


            jsonSerializer.Flush();
        }
Example #16
0
 public void OnReadValue(object obj, IValueWriter valueWriter)
 {
     ValueInterface.WriteValue(valueWriter, GetValue(obj));
 }
Example #17
0
 public void OnWriteValue(int key, IValueReader valueReader)
 {
     ValueInterface.WriteValue(this[key], valueReader.DirectRead());
 }
Example #18
0
        public void OnReadValue(object obj, IValueWriter valueWriter)
        {
            Assert(CanRead, "get");

            ValueInterface <TValue> .WriteValue(valueWriter, _get(obj));
        }
Example #19
0
 public void WriteValue(IValueWriter valueWriter, ValueTuple <T1> value)
 {
     ValueInterface.WriteValue(valueWriter, value.Item1);
 }
Example #20
0
        public void Serialize <T>(T value, TextWriter textWriter)
        {
            var hGCache = CharsPool.Rent();

            var options = Options;

            if ((options & ReferenceOptions) != 0)
            {
                var jsonSerializer = new JsonSerializer <JsonSerializeModes.ReferenceMode>(options, hGCache, MaxDepth)
                {
                    jsonFormatter = this,
                    textWriter    = textWriter,
                    References    = new JsonReferenceWriter()
                };

                if ((options & JsonFormatterOptions.Indented) != 0)
                {
                    jsonSerializer.IndentedChars  = IndentedChars;
                    jsonSerializer.LineBreakChars = LineBreakChars;
                    jsonSerializer.MiddleChars    = MiddleChars;
                }

                ValueInterface <T> .WriteValue(jsonSerializer, value);

                jsonSerializer.Flush();
            }
            else if ((options & ComplexOptions) != 0)
            {
                var jsonSerializer = new JsonSerializer <JsonSerializeModes.ComplexMode>(options, hGCache, MaxDepth)
                {
                    jsonFormatter = this,
                    textWriter    = textWriter
                };

                if ((options & JsonFormatterOptions.Indented) != 0)
                {
                    jsonSerializer.IndentedChars  = IndentedChars;
                    jsonSerializer.LineBreakChars = LineBreakChars;
                    jsonSerializer.MiddleChars    = MiddleChars;
                }

                ValueInterface <T> .WriteValue(jsonSerializer, value);

                jsonSerializer.Flush();
            }
            else
            {
                var jsonSerializer = new JsonSerializer <JsonSerializeModes.SimpleMode>(options, hGCache, MaxDepth)
                {
                    jsonFormatter = this,
                    textWriter    = textWriter
                };

                ValueInterface <T> .WriteValue(jsonSerializer, value);

                jsonSerializer.Flush();
            }

            hGCache.WriteTo(textWriter);

            CharsPool.Return(hGCache);
        }
Example #21
0
 void IXFieldRW.OnReadValue(object obj, IValueWriter valueWriter)
 {
     ValueInterface <TValue> .WriteValue(valueWriter, Value);
 }
Example #22
0
 internal static void WritePrimitive(IValueWriter valueWriter, object value, Type type)
 {
     ValueInterface.WriteValue(valueWriter, value);
 }
Example #23
0
 void IXFieldRW.OnReadValue(object obj, IValueWriter valueWriter)
 {
     ValueInterface <TValue> .WriteValue(valueWriter, GetReference(obj));
 }
Example #24
0
 public void OnReadValue(int key, IValueWriter valueWriter)
 {
     ValueInterface.WriteValue(valueWriter, dbDataReader[key]);
 }
 public void OnReadValue(object obj, IValueWriter valueWriter)
 {
     ValueInterface <TValue> .WriteValue(valueWriter, value);
 }
Example #26
0
 public void WriteValue(IValueWriter valueWriter, JsonValue value)
 {
     ValueInterface.WriteValue(valueWriter, value.value);
 }
Example #27
0
 public void OnReadValue(object obj, IValueWriter valueWriter)
 {
     ValueInterface <TValue> .WriteValue(valueWriter, Unsafe.ReadUnaligned <TValue>(ref GetAddress(obj)));
 }