C#におけるバイナリシリアル化と逆シリアル化とは?実装方法をわかりやすく解説
バイナリシリアル化(Binary Serialization)とは
オブジェクトを、人間には読み取れない形式である「バイナリ形式」へ変換することをバイナリシリアル化と呼びます。これにより、オブジェクトの状態をファイルやストリームとして保存できるようになります。
一方、保存されたバイナリデータを元の読み取り可能なオブジェクトに戻す処理を逆シリアル化(デシリアライズ)と呼びます。
C#でバイナリシリアル化を実現する方法
C#でバイナリシリアル化を行うには、System.Runtime.Serialization.Formatters.Binary アセンブリを使用します。手順は以下の通りです。
- 対象クラスに
[Serializable]属性を付与する BinaryFormatterクラスのインスタンスを作成するSerializeメソッドでオブジェクトを書き出し、Deserializeメソッドで復元する
例1:オブジェクトをバイナリ形式にシリアル化する
[Serializable]
public class Demo {
public string ApplicationName { get; set; } = "Binary Serialize";
public int ApplicationId { get; set; } = 1001;
}
class Program {
static void Main() {
Demo sample = new Demo();
FileStream fileStream = new FileStream(@"C:\Temp\Questions.dat", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fileStream, sample);
Console.ReadKey();
}
}出力結果
AConsoleApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ConsoleApp.Demo<ApplicationName>k__BackingField-<ApplicationId>k__BackingField Binary Serialize
このように、ファイルには人間がそのまま読めないバイナリデータが出力されます。
例2:バイナリデータからオブジェクトへ復元する(逆シリアル化)
[Serializable]
public class Demo {
public string ApplicationName { get; set; }
public int ApplicationId { get; set; }
}
class Program {
static void Main() {
FileStream fileStream = new FileStream(@"C:\Temp\Questions.dat", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
Demo deserializedSampledemo = (Demo)formatter.Deserialize(fileStream);
Console.WriteLine($"ApplicationName {deserializedSampledemo.ApplicationName} --- ApplicationId {deserializedSampledemo.ApplicationId}");
Console.ReadKey();
}
}出力結果
ApplicationName Binary Serialize --- ApplicationId 1001
シリアル化前の値(ApplicationName = "Binary Serialize"、ApplicationId = 1001)が正しく復元されていることが確認できます。
注意点:BinaryFormatterは非推奨
.NET 5 以降では、BinaryFormatter はセキュリティ上の脆弱性(安全でない逆シリアル化攻撃のリスク)により非推奨(obsolete)とされています。新規開発では、System.Text.Json や MessagePack など、より安全なシリアル化ライブラリの利用が推奨されます。既存のコードでどうしても使用する必要がある場合は、プロジェクト設定で EnableUnsafeBinaryFormatterSerialization を明示的に有効化する必要があります。
-
Win32WebViewHostとは?役割・削除方法・エラーの対処法を徹底解説
概要:Win32WebViewHostとは?Windows 10で何をしているのか?Win32WebViewHostは削除すべきか?Win32WebViewHostの削除方法Win32WebViewHostのエラーを修正する方法カメラやヘッドホンが動作しなくなっていませんか?Windows 10のアップデート後に、PCに「Win32WebViewHost」という項目が表示されていることに気づいた方も多いのではないでしょうか。Win32WebViewHostについて不安を感じている方は少なくありません。最新のWindowsアップデートをインストールした直後から、Win32WebViewHostが
-
BIOSとは?仕組みとWindows 10での正しい更新方法を徹底解説
パソコンでキーボードの不具合、電源まわりのトラブル、インターネット接続の問題や動作速度の低下などが発生したとき、その原因がBIOSに関連しているケースは少なくありません。修理業者やITの専門家に相談すると、本格的なトラブルシューティングの前に「まずBIOSを更新してみてください」とアドバイスされることも多いでしょう。実際、BIOSの更新だけで問題が解決するケースも多くあります。 BIOSとは? BIOS(Basic Input/Output System:基本入出力システム)は、PCのマザーボード上にある小さなメモリチップに格納されたソフトウェアで、CPUやGPUなど、PCに搭載されたすべての