在不同的命名空间下交替使用两个相同的类/接口?

时间:2015-07-23 16:15:28

标签: c# architecture

我正在编写一个Web应用程序,我想让第三方开发人员编写可以加载到应用程序中的“插件”来修改标准中的行为。

所以传统智慧会建议这样的事情:

public interface IPlugin {
    void Execute (IPluginContext context);
}
然后,第三方开发人员可以实现该接口,使用上下文,然后将其代码注册到要执行的应用程序(通常附加到某些消息和前/后条件)。

我的问题是如何公开这些接口。最简单的事情似乎是创建一个MyApplication.SDK库,它只包含我想要公开的接口和类。但是,这意味着我的主应用程序需要引用此库,因此SDK正在用于构建应用程序,这听起来有点回头。

无论如何在两个应用程序和主Web应用程序中都有一个IPlugin接口使用SDK的IPlugin接口,就好像它是自己的一样?因为它们都是相同的?

1 个答案:

答案 0 :(得分:4)

当您构建可插入系统时,您希望向插件作者公开的接口和支持类是您与插件作者之间的契约。因此,您的应用程序及其插件都可以引用同一个合同库。因此,您应该将插件架构的接口和支持类放入SDK库中。

此外,通过拥有SDK库,您可以在以后的新库中发布新版本,并可能支持多个版本的插件接口,这将允许您在保持向后兼容性的同时发展该功能。