我的应用程序实现了一种模块化架构,可以动态加载一个或多个“插件”程序集。每个程序集都包含一个实现IPlugin
接口的类,提供宿主应用程序用来与插件交互的各种方法和属性。
这个类不可避免地依赖于插件中的其他类,而这些类又可能有自己的依赖关系。到目前为止,我一直在使用 Castle Windsor 管理所有这些(每个插件都包含一个IWindsorInstaller
我注册其依赖项的位置),并通过它们的构造函数进行 DI。缺点是类必须是public
这种方法才能工作。
我现在已经意识到并想通过制作所有这些类来锁定插件internal
,但是我不确定处理依赖项的最佳方法,因为大概我将无法使用 Windsor。我不希望这些类实例化它们自己的依赖项(不是松散耦合、缺乏可测试性等),那么还有哪些其他方法呢?