gpt4 book ai didi

c# - 在C#中的新程序版本中读取旧剪贴板数据

转载 作者:行者123 更新时间:2023-12-04 15:26:01 24 4
gpt4 key购买 nike

我们有一个旧的程序版本,我们将可序列化的类放入剪贴板。对于这个例子,我们可以这样说:

namespace ClipboardLibrary
{
[Serializable]
public class ClipboardData
{
public string Content { get; set; }
}
}

现在,在新版本中,为了保持此示例的简单性,类看起来相同,只是 namespace 发生了如下更改:

namespace ClipboardLibrary.OtherNamespace
{
[Serializable]
public class ClipboardData
{
public string Content { get; set; }
}
}

当我现在从旧版本复制时 - 只需调用 SetData(someKey, ClipboardData) 即可完成,并尝试通过 Clipboard.GetData(someKey) 获取反序列化数据 我收到序列化异常:

System.Runtime.Serialization.SerializationException was unhandled
HResult=-2146233076
Message=Der für die Deserialisierung benötigte Typ "ClipboardLibrary.ClipboardData" kann nicht geladen werden.
Source=mscorlib
StackTrace:
bei System.Runtime.Serialization.ObjectManager.DoFixups()
bei System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
bei System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
bei System.Windows.DataObject.OleConverter.ReadObjectFromHandle(IntPtr handle)
bei System.Windows.DataObject.OleConverter.GetDataFromHGLOBAL(String format, IntPtr hglobal)
bei System.Windows.DataObject.OleConverter.GetDataFromOleHGLOBAL(String format, DVASPECT aspect, Int32 index)
bei System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(String format, DVASPECT aspect, Int32 index)
bei System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index)
bei System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert)
bei System.Windows.DataObject.GetData(String format, Boolean autoConvert)
bei System.Windows.Clipboard.GetDataInternal(String format)
bei System.Windows.Clipboard.GetData(String format)
bei CopyPaste.MainWindow.Button_Click_1(Object sender, RoutedEventArgs e) in c:\Users\twilker\Documents\Visual Studio 2013\Projects\CopyPaste\CopyPaste\MainWindow.xaml.cs:Zeile 42.
...

我对这里的德语文本感到抱歉。它的意思是找不到类型ClipboardLibrary.ClipboardData,这显然是有道理的。

是否有可能以某种方式检索数据?

最佳答案

您可以在新程序集中引用旧程序集,并通过反序列化获取 ClipboardLibrary.ClipboardData Type,无一异常(exception)。并在新的程序集转换器中实现从 ClipboardLibrary.ClipboardDataClipboardLibrary.OtherNamespace.ClipboardData

关于c# - 在C#中的新程序版本中读取旧剪贴板数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com