2012-10-01 37 views
0

我基本上負責爲我的項目使用大量外部資源的DLL。我想要一個名爲infrastructure.config的項目的配置文件,客戶端項目可以在他們的項目中複製,而無需剪切並粘貼到他們自己的應用程序或Web配置中。我想提出以下建議在:使用自定義配置部分在運行時更改默認AppConfig

Change default app.config at runtime

該解決方案行之有效,直到我用log4net的,它利用自定義欄目嘗試。當我嘗試使用上述鏈接中的代碼時,我收到了未知的配置部分。當我使用沒有上述代碼的相同配置文件時,它工作正常。有趣的是,當我嘗試使用TransactionScope時,它會爆炸。因此,在我的配置中使用TransactionScope和具有configurationSections的某些組合使其失敗。有什麼建議麼?

我希望每個客戶端應用程序或網站都有自己的配置值,而我的infrsatucture.dll應該能夠結合自己的值,自定義SOAP綁定和Log4Net。

回答

0

聽起來像Dependency Injection很好解決。

我強烈建議您不要創建依賴於配置文件(應用程序設置或部分)的應用程序/ dll,而是說您的界面暴露了它需要做的工作。這些可以是由其他DLL(log4net)公開的外部類/接口,也可以創建自己的接口並允許其他開發人員根據所需的抽象/接口類派生具體的類。

+0

這基本上是相反的情況。我在Infrasdtructure.dll上工作的DLL正在實現由Core DLL指定的接口。其中一個接口是日誌記錄。我試圖避免讓每個客戶端將特定於infrastructure.dll的配置設置複製到其配置文件的做法。我希望我們可以避免這種情況。現在,如果我的DLL是一個獨立的正在運行的進程,如Web服務,這不會是一個問題。我只是有我自己的配置。然而,在這個項目中,架構師只想使用普通的舊DLL。 – user434290