MAF 与 DLL 中的类传递给主机



我正在开发一个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 类的接口并使其成为协定。然后,外接程序可以提供实现。这样,您就不会丢失版本控制。

问候

帕诺斯

相关内容

  • 没有找到相关文章

最新更新