【问题标题】:initialization method on plugin interface插件接口上的初始化方法
【发布时间】:2013-06-22 15:09:54
【问题描述】:

我有以下插件接口:

public interface IPlugin
{
    IInitializedPlugin Initialize(PluginInitialization pluginInitialization);
}

应用程序可以获取IPlugin 实例(在这种情况下从IOC 容器),但要获取IInitializedPlugin 实例,它必须调用Initialize 方法。 PluginInitialization 结构简单,带有插件配置。然后IInitializedPlugin 具有实际的插件功能。如何改进这种设计?

【问题讨论】:

  • 这与Java无关。
  • 你可以稍微改变设计(实际上,它并没有改变设计,而是重命名类型),所以消费者提供了一个IPluginFactory 生成 IPlugin。工厂有一个Create 方法,它需要一个IPluginConfiguration 对象并返回一个实例化/初始化的IPlugin 对象。
  • @ChrisSinclair - IPluginFactory、Create 和 IPlugin 是更好的名字,谢谢。

标签: c# design-patterns plugins inversion-of-control


【解决方案1】:

您的设计肯定可以工作,PRISM (Microsoft 的桌面应用程序框架) 使用类似的方法来初始化模块,但是如果您使用 .NET 进行开发,我会考虑使用 @987654322 @ (Managed Extensibility Framework) 因为使用某个 IoC 容器会将插件与该特定容器耦合,您可以通过阅读 Mark Seemann 在此 Article 中的第四条评论了解更多信息.

【讨论】:

  • MEF 不需要避免依赖插件中的依赖注入容器。 Mark Seemann 总是很好读,谢谢你的链接。
猜你喜欢
  • 2017-06-16
  • 1970-01-01
  • 2015-01-11
  • 2015-02-16
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
相关资源
最近更新 更多