【发布时间】:2012-07-05 03:23:08
【问题描述】:
我正在开发一个 MAF 应用程序,它在 DLL 中包含一个类。问题是,当其中一个 AddIns 公开的方法之一使用此类时。示例:
class A
{
Property_1
Property_2
Method_X()
}
我的 AddIn 有一个使用 A 类的方法
MyAddIn.Set(class A);
那么,有了这个,我必须将 DLL 放在管道中的什么位置?或者我应该如何处理这种情况?
当项目启动时,AddInStore.Update() 方法的警告会抛出如下消息:无法连接部分渠道...
所以,有一篇文章 this 说“MAF 提供了许多其他功能,例如版本控制、传递集合和 WPF 视觉效果、传递不可序列化类型等”。但是我找不到例子。
编辑:
感谢 Panos 关于合同限制的link。经过更多研究,我发现了这个article,它通过 Paint.NET 项目展示了如何在不引用的情况下在主机中使用数据类型。
在阅读了这两个来源之后,我知道这就是我要寻找的。但我还不能理解。
作为最后的请愿书,有人可以提供我的代码示例吗?只是为了最终得到它。
谢谢。
【问题讨论】:
-
在继续使用 System.Addin 之前,我建议您查看其他插件引擎,例如 MEF。 MEF 很受欢迎,学习曲线很低。使用 System.AddIn,您将需要投入大量时间来掌握它。请注意,System.AddIn 具有加载项隔离功能(不同的 AppDomain/Processes),这很难由您自己完成,这可能是选择它的唯一理由。如果您正在寻找版本控制,请查看 Autofac + MEF。最后,如果您只需要加载项功能,MEF 应该绰绰有余。问候。
-
嗨,我已经看过 MEF,但是,使用 MAF 的主要原因是在不关闭应用程序的情况下更新插件,这一点至关重要。据我所知,MEF 无法做到这一点。我的应用程序已经能够更新插件。