選択的シリアル化

多くの場合、クラスには、シリアル化されないようにする必要のあるフィールドが含まれています。たとえば、クラスのメンバ変数にスレッド ID を格納する場合を考えます。このクラスがシリアル化されるときに ID を格納されたスレッドは、このクラスが逆シリアル化されると実行できなくなる可能性があるため、ID 値をシリアル化することには意味がありません。メンバ変数がシリアル化されないようにするには、NonSerialized 属性を使用して、それらのメンバ変数を次のようにマークします。

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

可能であれば、機密データを含むオブジェクトをシリアル化できないようにします。オブジェクトをシリアル化する必要がある場合は、機密データを格納する特定のフィールドに NonSerialized 属性を適用します。機密データを格納するフィールドをシリアル化から除外しない場合は、格納されているデータが、シリアル化のアクセス許可を持つコードに公開されることに注意する必要があります。安全なシリアル化コードの作成の詳細については、「セキュリティとシリアル化」を参照してください。

参照

概念

セキュリティとシリアル化

その他の技術情報

バイナリ シリアル化
リモート オブジェクト
XML シリアル化および SOAP シリアル化