1

我正在开发一个 MAF 应用程序,它在 DLL 中包含一个类。问题是,当某个插件公开的方法之一使用此类时。例子:

class A
{
    Property_1
    Property_2

    Method_X()
}

我的 AddIn 有一个使用 A 类的方法

MyAddIn.Set(class A);

那么,有了这个,我必须将 DLL 放在管道中的什么位置?或者我应该如何处理这种情况?

当项目启动时,AddInStore.Update() 方法的警告会引发如下消息:无法连接部分渠道......

因此,有一篇文章“MAF 提供了许多其他功能,例如版本控制、传递集合和 WPF 视觉效果、传递不可序列化类型等”。但我找不到一个例子。

编辑:

感谢 Panos 提供有关合同限制的链接。经过更多研究后,我发现这篇文章通过 Paint.NET 项目展示了如何在不引用的情况下在主机中使用数据类型。

在阅读了这两个来源之后,我知道这就是我正在寻找的。但我还不能理解。

作为最后的请愿书,有人可以提供我的代码示例吗?只是为了最终得到它。

谢谢。

4

1 回答 1

2

您应该研究这些指南,了解合同程序集中允许哪些类型。

基本上,您不应该引用您在管道(合同、适配器和视图)中提到的 dll,因为这样您可以将类型从主机泄漏到加载项。这意味着您将失去版本控制,因为所有管道段都引用相同的程序集。这意味着如果加载项引用程序集的 v.1 并且合同引用 v.2,则将加载两个版本并抛出 InvalidCasrtException。

解决这个问题的方法是创建一个基于类 A 的接口并使其成为契约。然后您的加载项可以提供实现。这样您就不会丢失版本控制。

问候,

帕诺斯

于 2012-07-04T08:36:03.150 回答