Linee guida di Windows Forms e Windows Presentation FoundationBinaryFormatterOLE
Questo documento illustra gli effetti della rimozione di BinaryFormatter sugli scenari di OLE in Windows Forms e in Windows Presentation Foundation (WPF). Per informazioni sugli effetti della rimozione di BinaryFormatter in Windows Forms in generale, consultare la guida alla migrazione Windows Forms per BinaryFormatter. Per informazioni sugli effetti della rimozione di BinaryFormatter in WPF in generale, consultare la guida alla migrazione WPF per BinaryFormatter.
BinaryFormatter negli scenari OLE
Appunti
Tutti i OLE DataFormats standard in System.Windows.Forms.DataFormats
e System.Windows.DataFormats
non passano per BinaryFormatter, tranne DataFormats.Serializable
e ogni formato personalizzato. Se si usa DataFormats.Serializable
o un formato personalizzato, si usa BinaryFormatter se lo scenario degli appunti coinvolge un tipo che non è intrinsecamente gestito come da guida alla migrazione di Windows Forms per BinaryFormatter e WPF Guida alla migrazione – Formattatore binario. In particolare, si usa BinaryFormatter quando si chiama System.Windows.Forms.Clipboard.SetData o System.Windows.Clipboard.SetData con il tipo o quando si chiama System.Windows.Forms.Clipboard.GetData o System.Windows.Clipboard.GetData per ottenere il tipo. BinaryFormatter si usa anche se si chiama System.Windows.Forms.Clipboard.SetDataObject o System.Windows.Clipboard.SetDataObject. Con la rimozione di BinaryFormatter, non verrà visualizzata un'eccezione quando si impostano i dati negli appunti, se BinaryFormatter era necessario. Verrà invece visualizzata una stringa relativa alla rimozione di BinaryFormatter se si tenta di ottenere il tipo non gestito intrinsecamente dagli appunti.
Funzionalità di trascinamento
Se lo scenario di trascinamento della selezione prevede tipi non gestiti intrinsecamente durante la serializzazione e la deserializzazione, si usa BinaryFormatter quando si chiama System.Windows.Forms.Control.DoDragDrop o System.Windows.DragDrop.DoDragDrop e i dati sono stati trascinati fuori dal processo. BinaryFormatter si usa anche quando si chiama System.Windows.Forms.DataObject.GetData o System.Windows.DataObject.GetData per recuperare i dati originati da un altro processo se il tipo non è intrinsecamente gestito. Con la rimozione di BinaryFormatter, ora viene visualizzata una stringa sulla rimozione di BinaryFormatter quando si tenta di recuperare i dati originati da un altro processo per i tipi non gestiti intrinsecamente.
Migrazione da BinaryFormatter
Appunti e trascinamento della selezione
Per i tipi non gestiti intrinsecamente usati nelle operazioni di appunti e trascinamento della selezione, è consigliabile formattare tali tipi come payload byte[]
o string
prima di passare i dati alle API di appunti o di trascinamento della selezione. L'uso di JSON è un modo per ottenere questo risultato. È necessario apportare rettifiche per gestire la ricezione di un tipo in formato JSON in modo simile alle rettifiche apportate per posizionare tipi in formato JSON nelle operazioni di appunti o di trascinamento della selezione. Per altre informazioni su come serializzare e deserializzare il tipo con JSON, vedere Come scrivere oggetti .NET come JSON (serializzare).
Problemi
Se si verifica un comportamento imprevisto con Windows Forms o WPF l'app per quanto riguarda BinaryFormatter la serializzazione o la deserializzazione, segnalare il problema rispettivamente a github.com/dotnet/winforms o github.com/dotnet/wpfwpf.