有选择的序列化

类通常包含不应被序列化的字段。例如,假设一个类将线程 ID 存储在成员变量中。当反序列化该类时,在序列化该类时为其存储 ID 的线程可能不再运行,因此序列化该值没有意义。通过用 NonSerialized 属性标记成员变量,可以防止它们被序列化,如下所示。

[Serializable]
public class MyObject 
{
  public int n1;
  [NonSerialized] public int n2;
  public String str;
}

如果可能,使可能包含安全敏感数据的对象不可序列化。如果必须序列化该对象,请将 NonSerialized 属性应用于存储敏感数据的特定字段。如果不将这些字段从序列化中排除,请注意,它们存储的数据将对有权进行序列化的任何代码公开。有关编写安全序列化代码的更多信息,请参见安全和序列化

请参见

概念

安全和序列化

其他资源

二进制序列化
远程对象
XML 和 SOAP 序列化