Tag: idataobject

如何执行未标记为可序列化的对象的深层副本(在C#中)?

我试图在C#中创建一个剪贴板堆栈。 剪贴板数据存储在System.Windows.Forms.DataObject对象中。 我想将每个剪贴板条目( IDataObject )直接存储在Generic列表中。 由于Bitmaps(似乎是)存储的方式我认为我需要先将深拷贝执行才能将其添加到列表中。 我尝试使用二进制序列化(见下文)来创建深层副本,但由于System.Windows.Forms.DataObject未标记为可序列化,因此序列化步骤失败。 有任何想法吗? public IDataObject GetClipboardData() { MemoryStream memoryStream = new MemoryStream(); BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, Clipboard.GetDataObject()); memoryStream.Position = 0; return (IDataObject) binaryFormatter.Deserialize(memoryStream); }