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); } }
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); } }
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); } }
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; }
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); } }
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)); } }
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(); } }
/// <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); } }
/// <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); } }
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); } }
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(); }
/// <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); }
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(); }
public void OnReadValue(object obj, IValueWriter valueWriter) { ValueInterface.WriteValue(valueWriter, GetValue(obj)); }
public void OnWriteValue(int key, IValueReader valueReader) { ValueInterface.WriteValue(this[key], valueReader.DirectRead()); }
public void OnReadValue(object obj, IValueWriter valueWriter) { Assert(CanRead, "get"); ValueInterface <TValue> .WriteValue(valueWriter, _get(obj)); }
public void WriteValue(IValueWriter valueWriter, ValueTuple <T1> value) { ValueInterface.WriteValue(valueWriter, value.Item1); }
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); }
void IXFieldRW.OnReadValue(object obj, IValueWriter valueWriter) { ValueInterface <TValue> .WriteValue(valueWriter, Value); }
internal static void WritePrimitive(IValueWriter valueWriter, object value, Type type) { ValueInterface.WriteValue(valueWriter, value); }
void IXFieldRW.OnReadValue(object obj, IValueWriter valueWriter) { ValueInterface <TValue> .WriteValue(valueWriter, GetReference(obj)); }
public void OnReadValue(int key, IValueWriter valueWriter) { ValueInterface.WriteValue(valueWriter, dbDataReader[key]); }
public void OnReadValue(object obj, IValueWriter valueWriter) { ValueInterface <TValue> .WriteValue(valueWriter, value); }
public void WriteValue(IValueWriter valueWriter, JsonValue value) { ValueInterface.WriteValue(valueWriter, value.value); }
public void OnReadValue(object obj, IValueWriter valueWriter) { ValueInterface <TValue> .WriteValue(valueWriter, Unsafe.ReadUnaligned <TValue>(ref GetAddress(obj))); }