2011-10-25 44 views
3

我有一個PRISM桌面應用程序,它使用DirectoryModuleCatalog從目錄加載模塊。如何在PRISM中獲取模塊實例

一切都很好,除了我找不到方法來獲取加載模塊的實例。 IModuleManager和IModuleCatalog沒有像getInstance(ModuleInfo)或類似的方法。

moduleManager.LoadModule(moduleInfo.ModuleName); 

此行加載模塊正常(ModuleManager會是類型IModuleManager的),但我有什麼未來得到這個模塊的實際情況呢?

這些模塊是根據用戶的需求加載的,所以我無法在引導程序啓動時註冊所有模塊。

+1

爲什麼你需要一個模塊實例?請描述您的問題,而不是您想到的解決方案。 – PVitt

+0

@PVitt加載的模塊實現一個特定的接口,我需要在所有這些加載的模塊實例上調用start()方法。 – Juergen

+1

爲什麼你必須在所有模塊上調用start? – PVitt

回答

4

如果通過模塊實例您指的是實現IModule的類,那麼您必須顯式註冊實例到容器中才能獲取它。

雖然前面提到的方法可行,但您根本不應該採取這種方法。這個想法是,模塊類是特定於特定模塊的,並且應該僅用於模塊初始化目的。

我將每個模塊的Start方法放在一個單獨的組件(IStartable)中,使用不同的Id在容器中註冊每個組件並解析/導入IEnumerable以獲取所有具有start方法的實例。

希望這有助於

+0

感謝您的回答。我做到了! – Juergen