逆シリアル化するときに意図せぬコードを実行される恐れがあるため、このクラスの使用は推奨されません。代替としてXmlSerializerやBinaryReaderなどを用います。BinaryFormatter および関連する型を使用するときの逆シリアル化のリスク | Microsoft Learn
using (FileStream fileStream = new FileStream(path, FileMode.Create)) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(fileStream, obj); }
シリアル化の対象のオブジェクトにSerializableAttributeが指定されていないと、「'***' はシリアル化可能として設定されていません。」としてSerializationExceptionが投げられます。
using (FileStream fileStream = new FileStream(path, FileMode.Open)) { BinaryFormatter formatter = new BinaryFormatter(); return formatter.Deserialize(fileStream); }
SoapFormatterではSOAP形式でシリアル化できます。
.NET Framework 2.0以降ではこのクラスの使用が推奨されないため、BinaryFormatterかXmlSerializerを使用するようにします。Remarks - SoapFormatter Class (System.Runtime.Serialization.Formatters.Soap) | Microsoft Learn
方法 | 継承 | |
---|---|---|
インターフェイスのメソッドを実装 | 可能 | ISerializable インターフェイス ISerializable インターフェイス (System.Runtime.Serialization) | MSDN |
属性を指定 | 不可 | SerializableAttribute クラス |