IStreamSerializable.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System.IO;
  2. namespace TBL.CSharp.Serialization
  3. {
  4. /// <summary>
  5. /// 可使用 <see cref="Stream"/> 序列化的对象接口
  6. /// <para>便于各类 C# API 体系来使用</para>
  7. /// </summary>
  8. public interface IStreamSerializable
  9. {
  10. /// <summary>
  11. /// 序列化
  12. /// <para>应妥当地自行处理字节序兼容</para>
  13. /// </summary>
  14. /// <param name="stream">要序列化到的目标流</param>
  15. /// <param name="withEndianConversion">是否进行端序转换</param>
  16. /// <returns>序列化数据的字节数</returns>
  17. int Serialize(Stream stream, bool withEndianConversion);
  18. /// <summary>
  19. /// 反序列化
  20. /// <para>应妥当地自行处理字节序兼容</para>
  21. /// </summary>
  22. /// <param name="stream">要反序列化的来源流</param>
  23. /// <param name="withEndianConversion">是否进行端序转换</param>
  24. /// <returns>反序列化数据的字节数</returns>
  25. int Deserialize(Stream stream, bool withEndianConversion);
  26. /// <summary>
  27. /// 当此对象反序列化时,是否应该使用构造方法初始化
  28. /// <para>如果为否,反序列化时创建的对象将不会使用构造方法</para>
  29. /// </summary>
  30. bool IsShouldInitializeWhenDeserialize();
  31. }
  32. }