我正在开发一个MAF应用程序,该应用程序在DLL中包含一个类。问题是,当其中一个加载项公开的方法之一使用此类时。例:
class A
{
Property_1
Property_2
Method_X()
}
我的插件有一个使用类 A 的方法
MyAddIn.Set(class A);
那么,有了这个,我必须将 DLL 放在管道中的什么位置?或者我应该如何处理这种情况?
当项目启动时,AddInStore.Update() 方法的警告会抛出如下消息:无法连接运河化的一部分...
因此,有一篇文章说"MAF 提供了许多其他功能,例如版本控制、传递集合和 WPF 视觉对象、传递不可序列化的类型等"。但我找不到例子。
编辑:
感谢 Panos 提供此链接,了解合同限制。经过更多的研究,我发现了这篇文章,通过 Paint.NET 项目,展示了如何在不引用的情况下在主机中使用数据类型。
在阅读了这两个来源之后,我知道这就是我正在寻找的。但我还不能理解。
作为最后的请愿书,有人可以给我提供代码示例吗?只是为了最终得到它。
谢谢。
您应该研究这些准则,了解合约程序集中允许哪些类型。
基本上,您不应该引用您在管道中提到的 dll(协定、适配器和视图),因为这样您可以将类型从主机泄漏到外接程序。这意味着您将丢失版本控制,因为所有管道段都引用同一程序集。这意味着,如果加载项引用程序集的 v.1 并且协定引用 v.2,则将加载两个版本并引发 InvalidCasrtException。
对此的解决方案是创建一个基于 A 类的接口并使其成为协定。然后,外接程序可以提供实现。这样,您就不会丢失版本控制。
问候
帕诺斯