次の方法で共有


Windows Forms と Windows Presentation FoundationBinaryFormatterOLE ガイダンス

このドキュメントでは、BinaryFormatter の削除が Windows Forms および Windows Presentation Foundation (WPF) の OLE シナリオに及ぼす影響の概要を説明します。 BinaryFormatter の削除による一般的な Windows Forms での影響の詳細については、Windows Forms 移行ガイド (BinaryFormatter 向け) を参照してください。 BinaryFormatter の削除による一般的な WPF での影響の詳細については、WPF 移行ガイド (BinaryFormatter 向け) を参照してください。

OLE シナリオでの BinaryFormatter

クリップボード

System.Windows.Forms.DataFormats および System.Windows.DataFormats のすべての標準 OLE DataFormats は、DataFormats.Serializable とカスタム形式を除き、BinaryFormatter を使用しません。 DataFormats.Serializable またはカスタム形式を使用している場合は、BinaryFormatter が使用されますが、クリップボードのシナリオに、「Windows Forms 移行ガイド (BinaryFormatter 向け)」および「WPF 移行ガイド - バイナリフォーマッタ」で概説されているような本質的に処理されない型が含まれる場合に限ります。 特に、BinaryFormatter は、型で System.Windows.Forms.Clipboard.SetData または System.Windows.Clipboard.SetData が呼び出された場合、および型を取得するために System.Windows.Forms.Clipboard.GetData または System.Windows.Clipboard.GetData が呼び出された場合に使用されます。 BinaryFormatter は、System.Windows.Forms.Clipboard.SetDataObject または System.Windows.Clipboard.SetDataObject が呼び出された場合にも使用されます。 BinaryFormatter が削除されると、BinaryFormatter が必要だった場合、クリップボードにそのデータを設定すると例外は表示されません。 代わりに、本質的に処理されない型をクリップボードから取得しようとすると、BinaryFormatter が削除されていることを示す文字列が表示されます。

ドラッグ アンド ドロップ機能

ドラッグ アンド ドロップ シナリオに、シリアル化および逆シリアル化の実行中に本質的に処理されない型が含まれる場合、System.Windows.Forms.Control.DoDragDrop または System.Windows.DragDrop.DoDragDrop が呼び出されて、データがプロセス外にドラッグされると BinaryFormatter が使用されます。 BinaryFormatter は、型が本質的に処理されない場合に別のプロセスに由来するデータを取得するために System.Windows.Forms.DataObject.GetData または System.Windows.DataObject.GetData が呼び出された場合にも使用されます。 BinaryFormatter が削除された場合、本質的に処理されない型の別のプロセスに由来するデータを取得しようとすると、BinaryFormatter が削除されていることを示す文字列が表示されるようになります。

BinaryFormatter からの移行

クリップボードとドラッグ アンド ドロップ

クリップボードやドラッグ アンド ドロップ操作で使用される、本質的に処理されない型の場合、データをクリップボードまたはドラッグ アンド ドロップ API に渡す前に、それらの型を byte[] または string のペイロードとして書式設定することをお勧めします。 これを実現する 1 つの方法は JSON を使用することです。 JSON 形式の型をクリップボードまたはドラッグ アンド ドロップ操作に配置するために行う調整と同様に、JSON 形式の型の受信を処理できるように調整を加える必要があります。 JSON を使用して型をシリアル化および逆シリアル化する方法の詳細については、「.NET オブジェクトを JSON として作成 (シリアル化) する方法」を参照してください。

問題

BinaryFormatter のシリアル化または逆シリアル化に関して、Windows Forms もしくは WPF のアプリで予期しない動作が発生した場合は、それぞれ github.com/dotnet/winforms または github.com/dotnet/wpf で問題を報告してください。