【发布时间】:2014-12-03 17:39:14
【问题描述】:
我有 2 个应用程序:一个基于 WPF DataGrid,另一个是 Excel AddIn。
我的目标是通过剪贴板将数据从前者传递到后者。
将制表符分隔的 cuadriculated 数据复制到常规 Excel“粘贴”操作中没有问题。此外,我还实现了自己的“智能粘贴”。
当我决定复制+粘贴一个更复杂的对象时,我的麻烦就开始了。我将我所有的类都标记为 [Serializable] 并且有一个方法可以确保对象可以被序列化。事实上,只要粘贴应用程序不是 Excel 插件,整个操作就可以完美运行。
传递的对象属于名为 Engineering.Export.Exported 的类。如我们所见,剪贴板看起来不错:
请参阅 3 条相关声明。它们在两个应用程序中是相同的。
最后一次分配仅在我需要的应用程序中失败。
我尝试了很多组合,例如 GetData("ExportFormat") 但结果都是一样的。
非常欢迎任何提示、建议。
TIA
加法:
我准备了一个超级简单的对象:
namespace Engineering
{
[Serializable]
public class SimpleStuff
{
public string Greetings;
public int GraduationYear;
public bool Available;
}
}
问题仍然存在:我可以将它导出到任何应用程序中除了一个 VSTO 插件。最后一条语句在 AddIns 中总是返回 null。
【问题讨论】:
-
你如何告诉插件你的类型
Exported(或测试用例SimpleStuff)是如何定义的?它是否链接到定义类型的实际库?其他一些机制,例如COM 类型库? -
Eric:我只是在源代码级别声明了两者相同。
-
我的问题仍然存在:有人能做到这一点吗?
-
Eric:你的评论让我思考。如果公司“A”执行复制的应用程序,而公司“B”执行粘贴的应用程序怎么办?他们在源代码级别达成一致是有道理的,而不必执行一些常见的链接。
-
好久没用剪贴板了……能不能把剪贴板数据作为二进制数据,检查一下是否完全符合预期,而不是直接从剪贴板反序列化?跨度>