这个问题与我感兴趣的问题很接近,但并不完全。
我有一个用 C# 编写的 .NET WinForms 应用程序。我有一个ListView
显示 C# 对象数组的控件。我已经将它连接起来,以便您可以将这些列表视图项拖放到同一应用程序中的不同表单中,并且它会正确地将对象数组(类型Session
)传递给该其他表单的放置处理程序。
但是,我现在想在运行应用程序的多个实例时支持跨进程拖放。这似乎会起作用(例如GetDataPresent
成功),但当我实际尝试检索数据时最终会引发异常——无法object[]
转换为Session[]
.
if (e.Data.GetDataPresent("Fiddler.Session[]"))
{
Session[] oDroppedSessions;
try
{
oDroppedSessions = (Session[])e.Data.GetData("Fiddler.Session[]");
}
catch (Exception eX)
{ // reaches here
}
}
任何人都知道我是否必须为我的对象实施ISerializable
才能使这项工作?通常,我会简单地尝试一下,但是ISerializable
为这个类实现将是非常重要的,我担心这样做可能会产生奇怪的副作用。
更新:实施ISerializable
无济于事-永远不会调用该方法。同样,将Serializable
属性添加到类中完全没有影响。还有其他想法吗?