/// <summary> /// 将文档字符串反序列化到指定的对象中。 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="textFormatter">文档反序列化器</param> /// <param name="textReader">文档字符串读取器</param> /// <param name="obj">对象</param> public static void DeserializeTo <T>(this ITextFormatter textFormatter, TextReader textReader, T obj) { IDataWriter dataWriter; try { dataWriter = RWHelper.CreateRW(obj); } catch (NotSupportedException) { dataWriter = RWHelper.CreateWriter <T>(); RWHelper.SetContent(dataWriter, obj); } if (dataWriter is IDataWriter <string> nameWriter) { DeserializeTo(textFormatter, textReader, nameWriter); } else if (dataWriter is IDataWriter <int> indexWriter) { DeserializeTo(textFormatter, textReader, indexWriter); } else { var invoker = new DeserializeToAsInvoker(textFormatter, textReader, dataWriter); AsHelper.GetInstance(dataWriter).Invoke(invoker); } }
private T ReadScalar <T>(DbDataReader dbDataReader) { if (typeof(T).IsAssignableFrom(dbDataReader.GetFieldType(0))) { if (dbDataReader.Read()) { return((T)dbDataReader[0]); } return(default(T)); } var overrideDbDataReader = new OverrideDbDataReader(dbDataReader); var dataWriter = RWHelper.CreateWriter <T>(); dataWriter.Initialize(); if (dataWriter is IDataWriter <int> ) { RWHelper.Copy(overrideDbDataReader, dataWriter); return(RWHelper.GetContent <T>(dataWriter)); } if (overrideDbDataReader.Read()) { RWHelper.Copy((IDataReader <string>)overrideDbDataReader, dataWriter); return(RWHelper.GetContent <T>(dataWriter)); } return(default(T)); }
public void DeserializeToTest() { var obj = new { Id = 0, Name = "" }; var jsonFormatter = new JsonFormatter(); jsonFormatter.DeserializeTo("{\"Id\":123,\"Name\":\"Dogwei\"}", RWHelper.CreateWriter(obj)); AreEqual(obj.Id, 123); AreEqual(obj.Name, "Dogwei"); var arr = new int[3]; jsonFormatter.DeserializeTo("[1,2,3]", RWHelper.CreateWriter(arr)); AreEqual(arr[0], 1); AreEqual(arr[1], 2); AreEqual(arr[2], 3); }
public static void DeserializeTo <T>(this IBinaryFormatter binaryFormatter, HGlobalCache <byte> hGCache, T obj) { binaryFormatter.DeserializeTo(hGCache, RWHelper.CreateWriter(obj)); }
public static void DeserializeTo <T>(this IBinaryFormatter binaryFormatter, Stream stream, T obj) { binaryFormatter.DeserializeTo(stream, RWHelper.CreateWriter(obj)); }
public static void DeserializeTo <T>(this IBinaryFormatter binaryFormatter, byte[] bytes, T obj) { binaryFormatter.DeserializeTo(bytes, RWHelper.CreateWriter(obj)); }
public static void DeserializeTo <T>(this ITextFormatter textFormatter, HGlobalCache <char> hGCache, T obj) { textFormatter.DeserializeTo(hGCache, RWHelper.CreateWriter(obj)); }
public static void DeserializeTo <T>(this ITextFormatter textFormatter, TextReader textReader, T obj) { textFormatter.DeserializeTo(textReader, RWHelper.CreateWriter(obj)); }
public static void DeserializeTo <T>(this IBinaryFormatter binaryFromatter, ReadOnlySpan <byte> text, T obj) { binaryFromatter.DeserializeTo(text, RWHelper.CreateWriter(obj)); }
public static void DeserializeTo <T>(this ITextFormatter textFormatter, ReadOnlySpan <char> text, T obj) { textFormatter.DeserializeTo(text, RWHelper.CreateWriter(obj)); }
public static async Task DeserializeToAsync <T>(this ITextFormatter textFormatter, Stream stream, T obj) { await textFormatter.DeserializeToAsync(stream, RWHelper.CreateWriter(obj)); }