从剪贴板粘贴对象时出错
Error while pasting object from Clipboard
这是我将对象复制并粘贴到剪贴板的代码:
private void CopyObject()
{
Clipboard.SetData(ClipboardDataFormats.SampleData, this.SelectedSampleObject);
}
private void PasteObject()
{
if (Clipboard.ContainsData(ClipboardDataFormats.SampleData) == true)
{
var sampleObject = (SampleClass)Clipboard.GetData(ClipboardDataFormats.SampleData); // exception
}
}
时收到以下异常
System.Runtime.InteropServices.COMException Data on clipboard is invalid.
HRESULT 0x800401D3 (CLIPBRD_E_BAD_DATA)
也许错误的原因是 SelectedSampleObject
是一个 entity framework 代理对象,当调用 Clipboard.SetData()
时。这可能吗?你有什么别的想法吗?不幸的是我真的不明白这个例外。
不确定这个特定的异常,但是您的代码无论如何都不能使用 EF 代理对象,因为您放入剪贴板的对象必须是可序列化的(例如标记为 Serializable
属性),并且 EF 代理 classes 不是。您当然可以禁用代理创建并将所有实体 class 标记为 [Serialiable]
,但我怀疑您是否想这样做。相反,创建另一个 class 仅具有必需的属性,将其标记为 Serialiable 并将其用于剪贴板操作。或将您的对象序列化为 json\xml,然后将其设置为剪贴板。
这是我将对象复制并粘贴到剪贴板的代码:
private void CopyObject()
{
Clipboard.SetData(ClipboardDataFormats.SampleData, this.SelectedSampleObject);
}
private void PasteObject()
{
if (Clipboard.ContainsData(ClipboardDataFormats.SampleData) == true)
{
var sampleObject = (SampleClass)Clipboard.GetData(ClipboardDataFormats.SampleData); // exception
}
}
时收到以下异常
System.Runtime.InteropServices.COMException Data on clipboard is invalid.
HRESULT 0x800401D3 (CLIPBRD_E_BAD_DATA)
也许错误的原因是 SelectedSampleObject
是一个 entity framework 代理对象,当调用 Clipboard.SetData()
时。这可能吗?你有什么别的想法吗?不幸的是我真的不明白这个例外。
不确定这个特定的异常,但是您的代码无论如何都不能使用 EF 代理对象,因为您放入剪贴板的对象必须是可序列化的(例如标记为 Serializable
属性),并且 EF 代理 classes 不是。您当然可以禁用代理创建并将所有实体 class 标记为 [Serialiable]
,但我怀疑您是否想这样做。相反,创建另一个 class 仅具有必需的属性,将其标记为 Serialiable 并将其用于剪贴板操作。或将您的对象序列化为 json\xml,然后将其设置为剪贴板。