Udostępnij za pośrednictwem


Windows Forms i Windows Presentation FoundationBinaryFormatterOLE wskazówki

W tym dokumencie opisano wpływ BinaryFormatter usuwania na OLE scenariusze w systemach Windows Forms i Windows Presentation Foundation (WPF). Aby uzyskać informacje o skutkach BinaryFormatter usuwania w Windows Forms ogóle, zobacz Windows Forms Przewodnik migracji dla programu BinaryFormatter. Aby uzyskać informacje o skutkach BinaryFormatter usuwania w WPF ogóle, zobacz WPF Przewodnik migracji dla programu BinaryFormatter.

BinaryFormatter w OLE scenariuszach

Schowek

Wszystkie standardowe OLE formaty DataFormat w systemach System.Windows.Forms.DataFormats i System.Windows.DataFormats nie przechodzą przez BinaryFormatterprogram , z wyjątkiem DataFormats.Serializable formatu niestandardowego i dowolnego formatu niestandardowego. Jeśli używasz DataFormats.Serializable formatu niestandardowego lub format niestandardowy, jest używany, BinaryFormatter jeśli scenariusz schowka obejmuje typ, który nie jest wewnętrznie obsługiwany zgodnie z opisem w Windows Forms przewodniku migracji dla BinaryFormatterprogramu i WPF Przewodnik migracji — formatator binarny. W szczególności jest używany, BinaryFormatter gdy System.Windows.Forms.Clipboard.SetData typ lub jest wywoływany z typem lub System.Windows.Clipboard.SetData , gdy System.Windows.Forms.Clipboard.GetData System.Windows.Clipboard.GetData lub jest wywoływany, aby uzyskać typ. BinaryFormatter jest również używany, jeśli System.Windows.Forms.Clipboard.SetDataObject lub System.Windows.Clipboard.SetDataObject jest wywoływany. BinaryFormatter Usunięcie spowoduje, że w razie BinaryFormatter potrzeby nie zostanie wyświetlony wyjątek podczas ustawiania danych w schowku. Zamiast tego zobaczysz ciąg o BinaryFormatter usuwaniu podczas próby pobrania typu, który nie jest wewnętrznie obsługiwany ze schowka.

Funkcja przeciągania i upuszczania

Jeśli scenariusz przeciągania i upuszczania obejmuje typy, które nie są wewnętrznie obsługiwane podczas serializacji i deserializacji, BinaryFormatter jest używany, gdy System.Windows.Forms.Control.DoDragDrop System.Windows.DragDrop.DoDragDrop lub jest wywoływany, a dane zostały przeciągnięte poza proces. BinaryFormatter jest również używany, gdy System.Windows.Forms.DataObject.GetData wywoływana jest funkcja lub System.Windows.DataObject.GetData jest wywoływana w celu pobrania danych pochodzących z innego procesu, jeśli typ nie jest wewnętrznie obsługiwany. Po usunięciu zobaczysz ciąg o BinaryFormatter usunięciu BinaryFormatter podczas próby pobrania danych pochodzących z innego procesu dla typów, które nie są wewnętrznie obsługiwane.

Migrowanie z dala od BinaryFormatter

Schowek i przeciąganie i upuszczanie

W przypadku typów, które nie są obsługiwane wewnętrznie, które są używane w operacjach schowka i przeciągania i upuszczania, zaleca się sformatowanie tych typów jako byte[] ładunku lub string przed przekazaniem danych do schowka lub przeciągania i upuszczania interfejsów API. Użycie formatu JSON jest jednym ze sposobów osiągnięcia tego celu. Należy wprowadzić korekty w celu obsługi odbierania typu sformatowanego w formacie JSON podobnego do zmian wprowadzonych w celu umieszczania typów sformatowanych w formacie JSON w schowku lub operacji przeciągania i upuszczania. Aby uzyskać więcej informacji na temat serializowania i deserializacji typu przy użyciu formatu JSON, zobacz How to write .NET objects as JSON (serialize).

Problemy

Jeśli wystąpi nieoczekiwane zachowanie w aplikacji Windows Forms lub WPF dotyczące BinaryFormatter serializacji lub deserializacji, zgłoś problem odpowiednio w github.com/dotnet/winforms lub github.com/dotnet/wpf .