Freigeben über


Windows Forms-Leitfaden für Windows Presentation Foundation in BinaryFormatter und OLE

In diesem Dokument werden die Auswirkungen beschrieben, die das Entfernen von BinaryFormatter auf OLE-Szenarien in Windows Forms und Windows Presentation Foundation (WPF) hat. Informationen zu den Auswirkungen der Entfernung von BinaryFormatter in Windows Forms im Allgemeinen finden Sie im Windows Forms-Migrationsleitfaden für BinaryFormatter. Informationen zu den Auswirkungen der Entfernung von BinaryFormatter in WPF im Allgemeinen finden Sie im WPF-Migrationsleitfaden für BinaryFormatter.

BinaryFormatter in OLE-Szenarien

Zwischenablage

Alle standardmäßigen OLE-Datenformate (DataFormats) in System.Windows.Forms.DataFormats und System.Windows.DataFormats durchlaufen nicht BinaryFormatter, mit Ausnahme von DataFormats.Serializable und benutzerdefinierten Formaten. Bei Verwendung von DataFormats.Serializable oder eines benutzerdefinierten Formats wird BinaryFormatter verwendet, wenn Ihr Zwischenablageszenario einen Typ enthält, der nicht systemintern behandelt wird, wie im Windows Forms-Migrationsleitfaden für BinaryFormatter und WPF-Migrationsleitfaden: Binäres Formatierungsprogramm erläutert. Insbesondere wird BinaryFormatter, wenn System.Windows.Forms.Clipboard.SetData oder System.Windows.Clipboard.SetData mit Ihrem Typ aufgerufen wird und wenn System.Windows.Forms.Clipboard.GetData oder System.Windows.Clipboard.GetData zum Abrufen Ihres Typs aufgerufen wird. BinaryFormatter wird auch verwendet, wenn System.Windows.Forms.Clipboard.SetDataObject oder System.Windows.Clipboard.SetDataObject aufgerufen wird. Beim Entfernen von BinaryFormatter wird beim Festlegen der Daten in der Zwischenablage keine Ausnahme angezeigt, wenn BinaryFormatter erforderlich war. Stattdessen wird eine Zeichenfolge zur Entfernung von BinaryFormatter angezeigt, wenn Sie versuchen, den Typ, der nicht systemintern behandelt wird aus der Zwischenablage abzurufen.

Drag & Drop-Funktion

Wenn Ihr Drag & Drop-Szenario Typen umfasst, die während der Serialisierung und Deserialisierung nicht systemintern behandelt werden, wird BinaryFormatter verwendet, wenn System.Windows.Forms.Control.DoDragDrop oder System.Windows.DragDrop.DoDragDrop aufgerufen wird und die Daten aus dem Prozess gezogen wurden. BinaryFormatter wird auch verwendet, wenn System.Windows.Forms.DataObject.GetData oder System.Windows.DataObject.GetData aufgerufen wird, um die Daten abzurufen, die aus einem anderen Prozess stammen, wenn der Typ nicht systemintern behandelt wird. Aufgrund der Entfernung von BinaryFormatter sehen Sie nun eine Zeichenfolge mit dem Hinweis, dass BinaryFormatter entfernt wird, wenn Sie versuchen, die aus einem anderen Prozess stammenden Daten für Typen abzurufen, die nicht systemintern behandelt werden.

Migrieren von BinaryFormatter

Zwischenablage und Drag & Drop

Für Typen, die nicht systemintern behandelt werden und in Zwischenablage- und Drag & Drop-Vorgängen verwendet werden, empfiehlt es sich, diese Typen als byte[]- oder string-Nutzlast zu formatieren, bevor Sie die Daten an Zwischenablage- oder Drag & Drop-APIs übergeben. Dazu können Sie JSON verwenden. Sie müssen Anpassungen vornehmen, um den Empfang eines JSON-formatierten Typs zu behandeln, ähnlich wie Anpassungen, die zum Platzieren von JSON-formatierten Typen in Zwischenablage- oder Drag & Drop-Vorgängen vorgenommen wurden. Weitere Informationen zum Serialisieren und Deserialisieren des Typs mit JSON finden Sie unter Schreiben von .NET-Objekten in JSON (Serialisieren).

Probleme

Wenn bei Ihrer Windows Forms- oder WPF-App unerwartetes Verhalten bezüglich der BinaryFormatter-Serialisierung oder -Deserialisierung auftritt, melden Sie ein Problem auf github.com/dotnet/winforms bzw. github.com/dotnet/wpf.