Partager via


Windows Forms and Windows Presentation FoundationBinaryFormatterOLE guidance

Ce document décrit les effets de la suppression de BinaryFormatter sur les scénarios OLE dans Windows Forms et Windows Presentation Foundation (WPF). Pour plus d’informations sur les effets de la suppression de BinaryFormatter dans Windows Forms en général, consultez le guide de migration Windows Formspour BinaryFormatter. Pour plus d’informations sur les effets de la suppression de BinaryFormatter dans WPF en général, consultez le guide de migration WPFpour BinaryFormatter.

Scénarios BinaryFormatter dans OLE

Presse-papiers

Tous les OLE DataFormats standard dans System.Windows.Forms.DataFormats et System.Windows.DataFormats ne passent pas par BinaryFormatter, à l'exception de DataFormats.Serializable et de tout format personnalisé. Si vous utilisez DataFormats.Serializable ou un format personnalisé, BinaryFormatter est utilisé si votre scénario de Presse-papiers implique un type qui n’est pas géré intrinsèquement, comme décrit dans le guide de migration Windows Forms pour BinaryFormatter et dans le guide de migration WPF – Binary Formatter. En particulier, BinaryFormatter est utilisé quand System.Windows.Forms.Clipboard.SetData ou System.Windows.Clipboard.SetData est appelé avec votre type et quand System.Windows.Forms.Clipboard.GetData ou System.Windows.Clipboard.GetData est appelé pour obtenir votre type. BinaryFormatter est également utilisé si System.Windows.Forms.Clipboard.SetDataObject ou System.Windows.Clipboard.SetDataObject est appelé. Avec la suppression de BinaryFormatter, vous ne verrez pas d’exception lors de la définition des données dans le Presse-papiers si BinaryFormatter était nécessaire. Au lieu de cela, vous verrez une chaîne indiquant que BinaryFormatter a été supprimé lorsque vous tentez d’obtenir le type qui n’est pas géré intrinsèquement dans le Presse-papiers.

Fonctionnalité glisser-déplacer

Si votre scénario de glisser-déposer implique des types qui ne sont pas gérés intrinsèquement pendant la sérialisation et la désérialisation, BinaryFormatter est utilisé lorsque System.Windows.Forms.Control.DoDragDrop ou System.Windows.DragDrop.DoDragDrop est appelé et que les données ont été déplacées du processus. BinaryFormatter est également utilisé quand System.Windows.Forms.DataObject.GetData ou System.Windows.DataObject.GetData est appelé pour récupérer les données provenant d’un autre processus si le type n’est pas géré intrinsèquement. Avec la suppression de BinaryFormatter, une chaîne indiquant que BinaryFormatter a été supprimé s'affiche lorsque vous tentez de récupérer les données provenant d’un autre processus pour les types qui ne sont pas gérés intrinsèquement.

Migration à partir de BinaryFormatter

Presse-papiers et glisser-déposer

Pour les types qui ne sont pas gérés intrinsèquement qui sont utilisés dans le Presse-papiers et dans le cadre des opérations de glisser-déposer, il est recommandé de formater ces types en tant que charge utile byte[] ou string avant de transmettre les données au Presse-papiers ou aux API de glisser-déposer. L’utilisation de JSON est un moyen d’y parvenir. Vous devrez procéder à des ajustements pour gérer la réception d'un type au format JSON, similaires aux ajustements effectués pour placer des types au format JSON dans le Presse-papiers ou dans le cadre d'opérations de glisser-déposer. Pour plus d’informations sur la sérialisation et la désérialisation du type avec JSON, consultez Comment écrire des objets .NET au format JSON (sérialisation).

Problèmes

Si vous rencontrez un comportement inattendu avec votre application Windows Forms ou WPF concernant la sérialisation ou la désérialisation de BinaryFormatter, veuillez signaler un problème sur la page github.com/dotnet/winforms ou github.com/dotnet/wpfwpf respectivement.