/// <summary> /// 对象转换XML字符串 /// </summary> /// <typeparam name="valueType">目标数据类型</typeparam> /// <param name="value">数据对象</param> /// <param name="config">配置参数</param> /// <returns>Xml 字符串</returns> private string serialize <valueType>(valueType value, SerializeConfig config) { Config = config ?? DefaultConfig; byte *buffer = AutoCSer.UnmanagedPool.Default.Get(); try { CharStream.Reset((byte *)buffer, AutoCSer.UnmanagedPool.DefaultSize); using (CharStream) { serialize(value); return(CharStream.ToString()); } } finally { AutoCSer.UnmanagedPool.Default.Push(buffer); } }
/// <summary> /// 对象转换 XML 字符串 /// </summary> /// <typeparam name="valueType">目标数据类型</typeparam> /// <param name="value">数据对象</param> /// <param name="xmlStream">Xml输出缓冲区</param> /// <param name="config">配置参数</param> /// <returns>警告提示状态</returns> public static SerializeWarning Serialize <valueType>(valueType value, CharStream xmlStream, SerializeConfig config = null) { Serializer xmlSerializer = YieldPool.Default.Pop() ?? new Serializer(); try { return(xmlSerializer.serialize <valueType>(value, xmlStream, config)); } finally { xmlSerializer.free(); } }
private SerializeWarning serialize <valueType>(valueType value, CharStream xmlStream, SerializeConfig config) { Config = config ?? DefaultConfig; CharStream.From(xmlStream); try { serialize(value); return(Warning); } finally { xmlStream.From(CharStream); } }
private SerializeResult serializeResult <valueType>(valueType value, SerializeConfig config) { return(new SerializeResult { Xml = serialize(value, config), Warning = Warning }); }