Поделиться через


Выборочная сериализация

Класс часто содержит поля, которые не должны быть сериализованы. Например, рассмотрим класс, содержащий идентификатор потока в переменной-члене. При десериализации класса поток, в котором хранился идентификатор во время сериализации класса, может уже не использоваться, поэтому сериализация такого значения не имеет смысла. Предотвратить сериализацию переменных-членов можно, маркировав их атрибутом NonSerialized следующим образом.

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

Для объекта, содержащего важные для обеспечения безопасности данные, следует, если это возможно, запретить сериализацию. Если же для данного объекта сериализация необходима, примените к соответствующим полям с важной информацией атрибут NonSerialized. Учтите, если не исключить эти поля из сериализации, хранимые в них данные будут предоставлены любому коду с разрешением сериализации. Дополнительные сведения о написании безопасного кода сериализации см. в разделе Безопасность и сериализация.

См. также

Другие ресурсы

Двоичная сериализация
Remote Objects
XML- и SOAP-сериализация
Security and Serialization