2011-06-30 60 views
1

我的應用程序應該在啓動時檢查它的設置,然後纔開始。 我想弄清楚如何使用DI容器來處理它。一方面,我不想把這種自我檢查放在組合根上。另一方面,如果檢查失敗,那麼我們不需要註冊所有類型的DI容器,並且可以簡單地退出。如何檢查先決條件,然後使用DI啓動應用程序?

所以我想到了一些2相DI。在第一階段,只有在自檢時需要的類型被註冊,並且在第二階段,整套類型被註冊並且應用程序對象被解析和啓動。但我不知道如何做到這一點。

你會如何處理這種情況?我正在使用Autofac。

謝謝。

回答

1

對於兩階段方法,您最初可以使用核心應用程序組件構建容器。然後你會解決這些問題並運行你的支票。如果檢查通過,則可以使用容器方法Update更新具有反射插件的容器。

但是,您是否需要設置驗證類型的DI?爲什麼不在創建容器之前直接使用它們?

+0

謝謝,我會嘗試使用Update()。 一些驗證是由組件本身執行的,所以在這裏使用容器似乎很方便。 –

0

我不知道我是否理解你。

你爲什麼要這麼做?

當您的應用程序檢查失敗時,您只需退出應用程序,容器即被釋放並釋放所有實例。甚至在您的DI容器中註冊組件的事實並不會損害您的性能。

+0

我在應用程序中使用可插拔模塊。當配置容器時,我通過反射和註冊類型來加載它們。這可能需要時間。 –

+0

並且例如連接字符串被注入數據訪問組件,並且配置文件中連接字符串的存在是自檢的一部分。 –

+0

爲了註冊的目的,我不認爲有一個簡單的解決方案。也許MEF會更好,因爲它爲基於插件的應用程序提供了其他選項。 –

相關問題