Поделиться через


Windows Forms и Windows Presentation FoundationBinaryFormatterOLE рекомендации

В этом документе описаны BinaryFormatter последствия удаления в OLE сценариях Windows Forms и Windows Presentation Foundation (WPF). Сведения о последствиях BinaryFormatter удаления в целом смWindows Forms. в Windows Forms руководстве по BinaryFormatterмиграции. Сведения о последствиях BinaryFormatter удаления в целом смWPF. в WPF руководстве по BinaryFormatterмиграции.

BinaryFormatter в OLE сценариях

Буфер обмена

Все стандартные OLE dataFormats в System.Windows.Forms.DataFormats и System.Windows.DataFormats не проходят через BinaryFormatterнее, за исключением DataFormats.Serializable любого пользовательского формата. Если вы используете DataFormats.Serializable или пользовательский формат, используется, если сценарий буфера обмена включает тип, BinaryFormatter который не обрабатывается встроенным образом, как описано в Windows Forms руководстве по миграции и BinaryFormatterWPF руководстве по миграции — двоичное форматирование. В частности, 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 удалении при попытке получить тип, который не обрабатывается внутренне из буфера обмена.

Функция перетаскивания

Если сценарий перетаскивания включает типы, которые не обрабатываются в процессе сериализации и десериализации, BinaryFormatter используются при System.Windows.Forms.Control.DoDragDrop вызове или System.Windows.DragDrop.DoDragDrop вызове и перетаскивании данных из процесса. BinaryFormatter также используется при System.Windows.Forms.DataObject.GetData вызове или System.Windows.DataObject.GetData вызове для получения данных, полученных из другого процесса, если тип не обрабатывается внутренне. BinaryFormatter При удалении теперь вы увидите строку об BinaryFormatter удалении при попытке получить данные, полученные из другого процесса для типов, которые не обрабатываются встроенным образом.

Миграция из BinaryFormatter

Буфер обмена и перетаскивание

Для типов, которые не обрабатываются в буфере обмена и операциях перетаскивания, рекомендуется отформатировать эти типы как byte[] полезные данные перед передачей данных в буфер обмена или string API перетаскивания. Использование JSON является одним из способов достижения этого. Вам потребуется внести корректировки для обработки получения форматированного типа JSON, аналогичного корректировкам, сделанным для размещения форматированных типов JSON в буфере обмена или операциях перетаскивания. Дополнительные сведения о сериализации и десериализации типа с помощью JSON см. в статье "Как записывать объекты .NET в формате JSON (сериализация)".

Проблемы

Если вы испытываете непредвиденное поведение с Windows Forms или приложением WPF относительно сериализации или десериализации BinaryFormatter, отправьте проблему по адресу github.com/dotnet/winforms или github.com/dotnet/wpf соответственно.