【问题标题】:What would prevent a class from being serializable?什么会阻止一个类被序列化?
【发布时间】:2012-07-03 16:47:47
【问题描述】:

什么会阻止类被序列化?

我了解默认情况下类不可序列化,因为启用序列化会引入开销。但是是否有某些类的特性会阻止它们被序列化?

如果它是相关的,我正在专门考虑 XML 序列化。

【问题讨论】:

  • 实际上,将类标记为Serializable 没有任何开销(参见stackoverflow.com/questions/3731224/…)。对于 XML 序列化,开销甚至更少,因为您甚至不需要使用属性,因为 XMLSerializer 适用于公共属性。您可能希望添加属性来控制序列化/反序列化过程,但这些也不会增加执行开销,尽管它们确实占用少量元数据空间。

标签: c# serialization xml-serialization


【解决方案1】:

有些对象无法序列化。如果对象包含外部资源的句柄,则这些句柄通常无法以有意义的方式序列化。

例子:

  • 打开 TCP 连接。
  • 事务对象。
  • 打开文件句柄。

【讨论】:

  • 还有ArrayList或List<T>的数组,Type作为属性,任何标记为[Obsolete],枚举使用ulong值>=9223372036854775808...etc
猜你喜欢
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多