2

Prismでモジュールをロードするこの方法の違いを誰でも説明できますか:

protected override void InitializeModules()
{
    IModule customerModule = Container.Resolve<CustomerModule.CustomerModule>();
    IModule helloWorldModule = Container.Resolve<HelloWorldModule.HelloWorldModule>();

    customerModule.Initialize();
    helloWorldModule.Initialize();
}

そしてこのように

protected override IModuleCatalog GetModuleCatalog()
{
    ModuleCatalog catalog = new ModuleCatalog()
        .AddModule(typeof(CustomerModule.CustomerModule))
        .AddModule(typeof(HelloWorldModule.HelloWorldModule));
    return catalog;
}

私はデモで両方の方法を見てきましたが、同じことをしていると言える限り、どちらも私のモジュールで必要なコンテナと regionManager を渡しているようです:

public class CustomerModule : IModule
{
    public IUnityContainer Container { get; set; }
    public IRegionManager RegionManager { get; set; }

    public CustomerModule(IUnityContainer container, IRegionManager regionManager)
    {
        Container = container;
        RegionManager = regionManager;
    }

    public void Initialize()
    {
        RegionManager.RegisterViewWithRegion("MainRegion", typeof(Views.CustomerView));
    }

}
4

1 に答える 1

3

IModuleCatalog GetModuleCatalog() と InitializeModules はどちらも UnityBootstrapper のものです。

  • GetModuleCatalog は、モジュールのロード方法を構成するためのものです。また、InitializeModules はモジュールを初期化するためのものです。

  • GetModulecatalog は、モジュールの Initializing を呼び出す前に起動されます。

  • ほとんどのシナリオで InitializeModules をオーバーライドする必要はありませんが、モジュールをロードする方法を UnityBootstrapper に伝える必要があります (app.config、Directory Lookup、Xap Dynamic Loader などに基づいて)。

それが役に立てば幸い。

于 2009-07-17T15:59:52.720 に答える