這裏的交易:我想創建一個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「看到」它自己的配置而不是主程序的配置。
所有的想法都很感謝!
感謝 湯姆