2013-04-02 53 views
0

請再次需要您的幫助。我正在開發一個模塊化概念的應用程序。Unity&Prism模塊化 - 載入問題

我想爲它使用Prism和Unity。我已經看過棱鏡的快速入門示例,我也在MSDN上閱讀了這個article

我的實際代碼如下所示:

public class Bootstrapper : UnityBootstrapper 
{ 
    protected override DependencyObject CreateShell() 
    { 
     return this.Container.Resolve<Shell>(); 
    } 

    protected override void InitializeShell() 
    { 
     base.InitializeShell(); 

     var window = this.Shell as Window; 
     if (window != null) 
     { 
      Application.Current.MainWindow = window; 
     } 
     else 
     { 
      throw new ArgumentException("The shell has to be a window."); 
     } 
    } 


    protected override IModuleCatalog CreateModuleCatalog() 
    { 
     return new ConfigurationModuleCatalog(); 
    } 
} 

我的配置:

<configuration> 
    <configSections> 
    <section name="modules" 
      type="Microsoft.Practices.Prism.Modularity.ModulesConfigurationSection, Microsoft.Practices.Prism"/> 
    </configSections> 
    <modules> 
    <module assemblyFile="Modules/MyApp.Module1.dll" 
      moduleType="MyApp.Module1.Module1Module, MyApp.Module1" 
      moduleName="Module1" /> 
    </modules> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

我現在有兩個問題,第一個是目錄未加載正確的。 對我來說,似乎加載方法沒有被調用,或類似的東西。

第二個問題是第一個問題的後果,我認爲我的模塊中的初始化方法沒有被調用。

任何人都可以幫助我嗎?

回答

2

我已將您的代碼放在Desktop Prism項目中,但它按預期工作。

某處在您的應用程序,你需要(至少):

var bootstrapper = new Bootstrapper(); 
bootstrapper.Run(); 

相信對於配置部分,默認是爲引導程序運行模塊,在啓動時,以便儘快加載,你模塊應該加載並初始化。這正是我在本地發生的事情。

這是我的模塊「初始化」的模樣:

using System; 
using System.Windows; 
using Microsoft.Practices.Prism.Modularity; 

namespace MyApp.Module1 
{ 
    class Module1Module : IModule 
    { 
     public void Initialize() 
     { 
      MessageBox.Show("Hello world!"); 
     } 
    } 
} 

檢查將看看是否能找到它看起來在目錄中MyApp.Module1.dll,但你會得到一個ModuleTypeLoadingException最後一件事在FileNotFoundException之後,如果不是這種情況,則有一次例外。

編輯:這裏是the complete source code爲我所做的測試解決方案。我想不出任何使它適用於我的差異,但不適合你。一探究竟。

+0

感謝您的回覆。 很抱歉忘記發佈我的App.xaml.cs代碼。我重寫了啓動並在那裏啓動我的引導程序。 我的模塊類大多是像你的一樣,我只有另一個測試字符串:-) Annd終於是該文件是在正確的文件夾,我沒有得到任何異常。 但它仍然無法正常工作。 – Sukram

+0

@Sukram:這幾乎是我所做的,我已經壓縮瞭解決方案的源代碼,因爲我想不出任何我可能做得不同的事情。 – Thorarin

+0

@ Thorarin:感謝你的代碼,我沒有發現任何對我的代碼的決定性,但它的工作原理。我建立了一個基於你的類的新項目,現在它工作正常。感謝您的幫助和代碼示例。 – Sukram