我正在尝试实现类似应用程序的插件。我知道已经有几种解决方案,但这只是概念的证明,仅此而已。这个想法是让应用程序主应用程序默认几乎没有功能,然后让插件相互了解,让它们实现所有需要的功能。
出现了几个问题:
- 我希望插件在运行时通过我的应用程序相互了解。这并不意味着在代码时他们不能引用其他插件的程序集,以便他们可以使用它的接口,只是插件功能初始化应该始终通过我的主应用程序进行。例如:如果我同时加载了插件 X 和 Y 并且 Y 想要使用 X 的功能,它应该通过我的应用程序“注册”它的兴趣以使用它的功能。我必须在我的应用程序中有一种“字典”,用于存储所有加载的插件。在注册对我的应用程序感兴趣后,插件 Y 将获得对 X 的引用,以便它可以使用它。这是一个好方法吗?
- 在编写使用 X 的插件 Y 时,我需要引用 X 的程序集,这样我就可以针对它的接口进行编程。那有版本控制的问题。如果我针对插件 X 的过时版本编写插件 Y 怎么办?我是否应该始终使用所有程序集所在的“中心”位置,始终保持最新版本的程序集?
是否有专门针对.NET 的此类设计的书籍?
谢谢
编辑:我认为人们正在远离我提出的 2 个问题。我可以查看 MEF 和#develop,但我想获得对我提出的问题的具体答案。