这里的交易:我想创建一个C#控制台应用程序。运行时,这个应用程序将在特定的文件夹中查找dll的实现特定接口的类,然后在这些dll上运行一个方法。Ninject +汽车发现
我之前没有这样做过,但是从我的阅读中看,应该从IoC/Ninject的角度来说“够简单”。我想你可以用kernel.Bind()
来做一些事情来加载特定目录中某个接口的程序集。我想/我希望我能把那部分弄清楚(如果你知道的话,请告诉你!)。
但这里是我的窘境。
这里是一个可视化,以帮助第一:
MainProgramFolder
-- MainProgram.exe
-- MainProgram.exe.config
-- LibraryFolder
----- Library1Folder
--------Library1.dll
--------Library1.dll.config
----- Library2Folder
--------Library2.dll
--------Library2.dll.config
DLL的实现这个接口在技术上独立的应用程序 - 它们只是库而不是exe文件的(或者说,我想他们喜欢为了IoC的目的)。我希望他们能够在自己的环境中运行,并拥有自己的app.configs。因此,例如,MainProgram.exe会将ILibrary接口绑定到Library1.dll和Library2.dll中的类,因为它们实现了ILibrary。但里面的库1,它调用ConfigurationManager来获得它的设置。当我为MainProgram的每个绑定调用Class.Method()时,如何确保它们引用自己的.config而不是MainProgram.exe.config? (另外,fwiw,这些额外的库可能不是程序集的一部分,甚至是主程序的命名空间的一部分 - 我们基本上为应用程序提供了一个drop文件夹,用于“订阅”主程序的执行。)
IOW,我知道你可以附加一个app.config到一个类库,但我不知道在从IOC解析绑定之后,如何让这些DLL“看到”它自己的配置而不是主程序的配置。
所有的想法都很感谢!
感谢 汤姆