0

またお願いします。モジュールコンセプトのアプリケーションに取り組んでいます。

PrismとUnityを使いたいです。Prism のクイックスタートの例を確認し、MSDN のこの記事も読みました。

私の実際のコードは次のようになります。

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 つの問題があります。1 つ目は、カタログが正しく読み込まれていないことです。私にとっては、ロードメソッドが呼び出されていないようです。

2 番目の問題は、私のモジュールの初期化メソッドが呼び出されていないという最初の問題の結果です。

誰でも私を助けることができますか?

4

1 に答える 1

2

デスクトップ プリズム プロジェクトのコードをそのまま使用しましたが、期待どおりに動作します。

アプリケーションのどこかで、(少なくとも) 以下が必要になります。

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

config セクションでは、デフォルトでは起動時にモジュールがロードされるため、Bootstrapper が実行されるとすぐに、モジュールがロードされて初期化されるはずです。これはまさに私が地元で起こっていることです。

これは私のモジュールの「初期化」がどのように見えるかです:

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例外が発生します。

編集:これは、私が作成したテスト ソリューションの完全なソース コードです。私にとってはうまくいくが、あなたにとってはうまくいかない違いは考えられません。見てみな。

于 2013-04-02T22:12:42.140 に答える