[英]Caliburn.Micro does not have “Bootstrapper” in a namespace in App.xaml
[英]caliburn.micro, Bootstrapper and CompositionRoot
我試圖了解什么是CompositionRoot。
到現在為止,我還沒有找到關於它的深刻描述,只是簡短地陳述了不應該做的事情。
利用caliburn.micro時出現的Bootstrapper已經是“ CompositionRoot”的意思了嗎?
還是更接近servicelocator反模式,因為它只能傳遞程序集內部及其依賴項中的任何內容。
如果有人對CompositionRoot有很好的描述,請分享。 我已經知道了ploeh博客。
如果我發現CompositionRoot可以帶來更好的體系結構和/或幫助我解決問題,那么我仍然願意購買該書。 但是,我知道周圍沒有足夠的信息對我有所幫助。
更新
假設我的所有ViewModel都注入了EventAggregator(構造函數注入)。 現在,我想在需要時動態創建這些ViewModel。 我可以預先注冊類型(在CompositionRoot中),但是以后如何解決依賴關系? 據我了解,容器在組成根之后不應該被觸摸。 確實,我不想在需要它們之前創建所有實例(這會使應用程序啟動緩慢)。 這里是“注冊-解決-發布”嗎? (該模式也是在ploeh博客中創造的)
我想您已經在http://blog.ploeh.dk/2011/07/28/CompositionRoot上看到了Mark的文章。
聲明如下:
組合根是應用程序中組合模塊的(最好)唯一位置。
而且這應該是:
盡可能靠近應用程序的入口點。
對於Caliburn.Micro, Bootstrapper
類提供了ConfigureContainer
方法供您覆蓋和組成模塊。
理想情況下,僅是您的合成根目錄具有對IoC容器的引用。
Caliburn.Micro將通過您的容器解析您的shell視圖模型(如果您使用Bootstrapper
的通用版本)。
如果您確實需要在合成根目錄之外引用容器,它也會提供一個靜態IoC
類,該類是Service Locator(anti)模式的實現。
更新資料
如果您希望在運行時通過組成根之后通過容器解析類型(例如,如果您具有復雜的依賴關系鏈),請使用工廠類型。
這些工廠類型還將引用您的IoC容器。 您可以:
IoC
類)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.