public void WriteValue(IValueWriter valueWriter, object value) { if (value == null) { valueWriter.DirectWrite(null); return; } if (valueWriter is IValueWriter <object> writer) { writer.WriteValue(value); return; } /* 父类引用,子类实例时使用 Type 获取写入器。 */ if (TypeInfo <object> .Int64TypeHandle != (long)TypeHelper.GetTypeHandle(value)) { ValueInterface.GetInterface(value).Write(valueWriter, value); return; } valueWriter.DirectWrite(value); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value is null) { valueWriter.DirectWrite(null); } else if (valueWriter is IValueWriter <T> writer) { writer.WriteValue(value); } else if (value is IFormattable) { valueWriter.DirectWrite(value); } else if (value is string str) { valueWriter.WriteString(str); } else if (TypeHandle != TypeHelper.GetTypeHandle(value)) { ValueInterface.GetInterface(value).Write(valueWriter, value); } else { valueWriter.DirectWrite(value); } }
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 void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } if (valueWriter is IValueWriter <T> tWriter) { tWriter.WriteValue(value); return; } if (valueWriter is IValueWriter <System.Reflection.Assembly> assemblyWriter) { assemblyWriter.WriteValue(value); return; } valueWriter.WriteString(value.FullName); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value is null) { valueWriter.DirectWrite(null); } else if (valueWriter is IValueWriter <T> tWriter) { tWriter.WriteValue(value); } else if (valueWriter is IValueWriter <Type> typeWriter) { typeWriter.WriteValue(value); } else { if (value.Assembly == typeof(object).Assembly) { valueWriter.WriteString(value.FullName); } else { valueWriter.WriteString(value.AssemblyQualifiedName); } } }
/// <summary> /// 写入入口。 /// </summary> internal static void Write(IValueWriter valueWriter, object value, Type declaringType) { if (value is null) { valueWriter.DirectWrite(null); return; } var actualType = value.GetType(); if (IsPointer(actualType)) { throw new NotSupportedException("Pointer are not supported"); } if (declaringType == actualType) { if (IsPrimitive(actualType)) { WritePrimitive(valueWriter, value, actualType); return; } if (IsArray(actualType)) { WriteArray(valueWriter, value, actualType); return; } } valueWriter.WriteObject(new SerializationRW(value, declaringType)); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } if (valueWriter is IValueWriter <T> tWriter) { tWriter.WriteValue(value); return; } if (valueWriter is IValueWriter <Type> typeWriter) { typeWriter.WriteValue(value); return; } valueWriter.WriteString(value.AssemblyQualifiedName); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } var dictionaryRW = new DictionaryRW <T, TKey, TValue>(); dictionaryRW.Initialize(value); if (typeof(TKey) == typeof(string)) { valueWriter.WriteObject(Unsafe.As <IDataReader <string> >(dictionaryRW)); } else { if (valueWriter is IMapValueWriter mapWriter) { mapWriter.WriteMap(dictionaryRW); } else { valueWriter.WriteObject(dictionaryRW.As <string>()); } } }
public void WriteValue(IValueWriter valueWriter, object value) { if (value is null) { valueWriter.DirectWrite(null); return; } /* 父类引用,子类实例时使用 Type 获取写入器。 */ if (TypeHandle != TypeHelper.GetTypeHandle(value)) { ValueInterface.GetInterface(value).Write(valueWriter, value); return; } valueWriter.DirectWrite(value); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); } else { valueWriter.WriteArray(ArrayRW <T> .Create(value)); } }
public void WriteValue(IValueWriter valueWriter, DateTimeOffset value) { if (valueWriter is IValueWriter <DateTimeOffset> dateTimeOffsetWriter) { dateTimeOffsetWriter.WriteValue(value); return; } valueWriter.DirectWrite(value); }
public void OnReadValue(int key, IValueWriter valueWriter) { if (dbDataReader.Read()) { valueWriter.WriteObject(Reader); } else { valueWriter.DirectWrite(null); } }
public void WriteValue(IValueWriter valueWriter, TimeSpan value) { if (valueWriter is IValueWriter <TimeSpan> timeSpanWriter) { timeSpanWriter.WriteValue(value); return; } valueWriter.DirectWrite(value); }
public void WriteValue(IValueWriter valueWriter, T?value) { if (value == null) { valueWriter.DirectWrite(null); } else { ValueInterface <T> .Content.WriteValue(valueWriter, value.Value); } }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } if (valueWriter is IValueWriter <T> writer) { writer.WriteValue(value); return; } if (value is IFormattable) { valueWriter.DirectWrite(value); return; } if (value is string) { valueWriter.WriteString((string)(object)value); return; } /* 父类引用,子类实例时使用 Type 获取写入器。 */ if (Int64TypeHandle != (long)TypeHelper.GetTypeHandle(value)) { ValueInterface.GetInterface(value).Write(valueWriter, value); return; } valueWriter.DirectWrite(value); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } /* 父类引用,子类实例时使用 Type 获取写入器。 */ if (CheckChildrenInstance && Int64TypeHandle != (long)TypeHelper.GetTypeHandle(value)) { ValueInterface.GetInterface(value).Write(valueWriter, value); return; } if (valueWriter is ISingleThreadOptimize) { var current_cache = thread_cache; if (current_cache == null) { InitializeInstance(ref current_cache); } if (current_cache.IsUsed) { goto Default; } current_cache.IsUsed = true; current_cache.Instance.Initialize(value); valueWriter.WriteObject(current_cache.Instance); current_cache.IsUsed = false; return; } Default: var fastObjectRW = FastObjectRW <T> .Create(); fastObjectRW.Initialize(value); valueWriter.WriteObject(fastObjectRW); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } var listRW = new ListRW <T, TValue>(); listRW.Initialize(value); valueWriter.WriteArray(listRW); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } var arrayWriter = ArrayRW <T> .Create(); arrayWriter.Initialize(value); valueWriter.WriteArray(arrayWriter); }
public void WriteValue(IValueWriter valueWriter, TElement[] value) { if (value is null) { valueWriter.DirectWrite(null); } else if (valueWriter is IValueWriter <TElement[]> writer) { writer.WriteValue(value); } else { valueWriter.WriteArray(new ArrayRW <TElement>(value)); } }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } var dictionaryRW = new DictionaryRW <T, TKey, TValue>(); dictionaryRW.Initialize(value); valueWriter.WriteObject(((IDataReader)dictionaryRW).As <string>()); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } var enumeratorReader = new EnumeratorReader <T, TValue>(); enumeratorReader.Initialize(value); valueWriter.WriteArray(enumeratorReader); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value == null) { valueWriter.DirectWrite(null); return; } var collectionRW = new CollectionRW <T, TValue>(); collectionRW.Initialize(value); valueWriter.WriteArray(collectionRW); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value is null) { valueWriter.DirectWrite(null); return; } var enumeratorReader = new EnumeratorReader <T, TValue> { content = value }; valueWriter.WriteArray(enumeratorReader); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value is null) { valueWriter.DirectWrite(null); return; } var dictionaryRW = new DictionaryRW <T> { content = value }; valueWriter.WriteObject(dictionaryRW.As <string>()); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value is null) { valueWriter.DirectWrite(null); return; } var collectionRW = new CollectionRW <T> { content = value }; valueWriter.WriteArray(collectionRW); }
public void WriteValue(IValueWriter valueWriter, FSharpList <T> value) { if (value is null) { valueWriter.DirectWrite(null); } else if (valueWriter is IValueWriter <FSharpList <T> > writer) { writer.WriteValue(value); } else { valueWriter.WriteArray(new FSharpListRW <T> { content = value }); } }
public void WriteValue(IValueWriter valueWriter, T value) { var enumerator = value?.GetEnumerator(); if (enumerator == null) { valueWriter.DirectWrite(null); return; } var enumeratorReader = new EnumeratorReader <IEnumerator <TValue>, TValue>(); enumeratorReader.Initialize(enumerator); valueWriter.WriteArray(enumeratorReader); }
public void WriteValue(IValueWriter valueWriter, T value) { if (value is null) { valueWriter.DirectWrite(null); } else if (valueWriter is IValueWriter <T> writer) { writer.WriteValue(value); } else { valueWriter.WriteArray(new ListRW <T, TValue> { content = value }); } }
public void WriteValue(IValueWriter valueWriter, Version value) { if (value == null) { valueWriter.DirectWrite(null); return; } if (valueWriter is IValueWriter <Version> versionReader) { versionReader.WriteValue(value); } else { valueWriter.WriteString(value.ToString()); } }
public void WriteValue(IValueWriter valueWriter, Uri value) { if (value == null) { valueWriter.DirectWrite(null); return; } if (valueWriter is IValueWriter <Uri> writer) { writer.WriteValue(value); return; } valueWriter.WriteString(value.ToString()); }