データ永続化

シリアル化 (Serialization)

BinaryFormatter

逆シリアル化するときに意図せぬコードを実行される恐れがあるため、このクラスの使用は推奨されません。代替としてXmlSerializerBinaryReaderなどを用います。BinaryFormatter および関連する型を使用するときの逆シリアル化のリスク | Microsoft Learn

Serialize()

using (FileStream fileStream = new FileStream(path, FileMode.Create))
{
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(fileStream, obj);
}

シリアル化の対象のオブジェクトにSerializableAttributeが指定されていないと、「'***' はシリアル化可能として設定されていません。」としてSerializationExceptionが投げられます。

Deserialize()

using (FileStream fileStream = new FileStream(path, FileMode.Open))
{
    BinaryFormatter formatter = new BinaryFormatter();
    return formatter.Deserialize(fileStream);
}

SoapFormatter

SoapFormatterではSOAP形式でシリアル化できます。

.NET Framework 2.0以降ではこのクラスの使用が推奨されないため、BinaryFormatterかXmlSerializerを使用するようにします。Remarks - SoapFormatter Class (System.Runtime.Serialization.Formatters.Soap) | Microsoft Learn

XmlSerializer

シリアル化の方法のカスタマイズ

方法 継承  
インターフェイスのメソッドを実装 可能 ISerializable インターフェイス
ISerializable インターフェイス (System.Runtime.Serialization) | MSDN
属性を指定 不可 SerializableAttribute クラス

SerializableAttribute

Microsoft Learnから検索