Partilhar via


Windows Forms e Windows Presentation FoundationBinaryFormatterOLE orientação

Este documento descreve os efeitos que a BinaryFormatter remoção tem nos OLE cenários em Windows Forms e Windows Presentation Foundation (WPF). Para obter informações sobre os efeitos da remoção em Windows Forms geral, consulteWindows Forms o guia de BinaryFormatter migração para BinaryFormatter. Para obter informações sobre os efeitos da remoção em WPF geral, consulteWPF o guia de BinaryFormatter migração para BinaryFormatter.

BinaryFormatter em OLE cenários

Área de transferência

Todos os DataFormats padrão OLE em System.Windows.Forms.DataFormats e System.Windows.DataFormats não passam por BinaryFormatter, exceto para DataFormats.Serializable e qualquer formato personalizado. Se você estiver usando DataFormats.Serializable um formato personalizado ou personalizado, BinaryFormatter será usado se o cenário da área de transferência envolver um tipo que não é intrinsecamente tratado conforme descrito no Windows Forms Guia de migração para BinaryFormattere WPF Guia de migração – Formatter binário. Particularmente, BinaryFormatter é usado quando System.Windows.Forms.Clipboard.SetData ou System.Windows.Clipboard.SetData é chamado com o seu tipo e quando System.Windows.Forms.Clipboard.GetData ou System.Windows.Clipboard.GetData é chamado para obter o seu tipo. BinaryFormatter também é usado se System.Windows.Forms.Clipboard.SetDataObject ou System.Windows.Clipboard.SetDataObject é chamado. Com a BinaryFormatter remoção, você não verá uma exceção ao definir os dados na área de transferência, se BinaryFormatter necessário. Em vez disso, você verá uma cadeia de caracteres sobre BinaryFormatter como ser removido quando tentar obter o tipo que não é intrinsecamente manipulado da área de transferência.

Recurso de arrastar e soltar

Se o cenário de arrastar e soltar envolver tipos que não são intrinsecamente manipulados durante a serialização e desserialização, BinaryFormatter será usado quando System.Windows.Forms.Control.DoDragDrop ou System.Windows.DragDrop.DoDragDrop for chamado e os dados tiverem sido arrastados para fora do processo. BinaryFormatter também é usado quando System.Windows.Forms.DataObject.GetData ou System.Windows.DataObject.GetData é chamado para recuperar os dados que se originaram de outro processo se o tipo não for intrinsecamente manipulado. Com a BinaryFormatter remoção, você verá uma cadeia de caracteres sobre BinaryFormatter como ser removido quando tentar recuperar os dados originados de outro processo para tipos que não são tratados intrinsecamente.

Migrando de BinaryFormatter

Área de transferência e arrastar e soltar

Para tipos que não são intrinsecamente manipulados e que são usados em operações de área de transferência e arrastar e soltar, é recomendável formatar esses tipos como uma byte[] ou string carga útil antes de passar os dados para APIs da área de transferência ou de arrastar e soltar. Usar JSON é uma maneira de conseguir isso. Você precisará fazer ajustes para lidar com o recebimento de um tipo formatado JSON semelhante aos ajustes feitos para colocar tipos formatados JSON na área de transferência ou operações de arrastar e soltar. Para obter mais informações sobre como serializar e desserializar o tipo com JSON, consulte Como escrever objetos .NET como JSON (serialize).

Problemas

Se você tiver um comportamento inesperado com seu Windows Forms aplicativo em WPF relação à BinaryFormatter serialização ou desserialização, registre um problema em github.com/dotnet/winforms ou github.com/dotnet/wpf respectivamente.