IUnsafeSerializable.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. namespace TBL.CSharp.Serialization
  2. {
  3. /// <summary>
  4. /// 可使用非安全序列化的对象接口
  5. /// <para>非安全序列化的优点是效率极高,适合网络传输;缺点是自身不包含任何类型信息,不适合作为存档等用途</para>
  6. /// </summary>
  7. public unsafe interface IUnsafeSerializable
  8. {
  9. /// <summary>
  10. /// 序列化
  11. /// </summary>
  12. /// <param name="data">要序列化到的目标数据区</param>
  13. /// <returns>序列化数据的字节数</returns>
  14. int Serialize(byte* data);
  15. /// <summary>
  16. /// 反序列化
  17. /// </summary>
  18. /// <param name="data">要反序列化的来源数据区</param>
  19. /// <returns>反序列化数据的字节数</returns>
  20. int Deserialize(byte* data);
  21. /// <summary>
  22. /// 同 <see cref="Serialize"/>
  23. /// <para>但会进行端序转换</para>
  24. /// </summary>
  25. int SerializeWithEndianConversion(byte* data);
  26. /// <summary>
  27. /// 同 <see cref="Deserialize"/>
  28. /// <para>但会进行端序转换</para>
  29. /// </summary>
  30. int DeserializeWithEndianConversion(byte* data);
  31. /// <summary>
  32. /// 计算序列化字节数
  33. /// </summary>
  34. int CalcSerializationSize();
  35. /// <summary>
  36. /// 当此对象反序列化时,是否应该使用构造方法初始化
  37. /// <para>如果为否,反序列化时创建的对象将不会使用构造方法</para>
  38. /// </summary>
  39. bool IsShouldInitializeWhenDeserialize();
  40. }
  41. }