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 .