0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Prism コードサンプル学習:07-Modules

Posted at

Prism コードサンプル学習:07-Modules

はじめに

以下の記事の続きです。
https://qiita.com/mngreen/items/41d3bd3159be3b279a5f

07-Modules

本サンプルではModuleの読み込みを、以下の5パターンの方法で行うやり方です。

App.configを用いた読み込み

  • App.configで読み込まれるようにどこで設定されているか
    • App.xaml.csでCreateModuleCatalogをオーバーライドして

       return new ConfigurationModuleCatalog();
      

      としているが、この内部の呼び先をたどっていくとConfigurationStore.Desktopに到達する。App.configが参照されるのは、ここでConfigurationManagerを利用しているから。

プロジェクトを参照し、IModuleCatalogを用いて読み込み

  • 呼び出されているメソッドはここ
    • このメソッドを呼び出すと型情報からModuleCatalogを生成して追加してくれる。最終的に呼び出されるのはここのはず。

Moduleが格納されているフォルダを指定して読み込み

  • フォルダパスを指定すると、それ以下のModuleをかき集めてくれる。実際に読み込み処理が発生するのはここ
  • ビルド時にModuleフォルダに格納するように設定の変更が必要

ModuleInfoのインスタンスを生成してIModuleCatalogに追加

ModuleInfoをXamlで定義し、そのXamlからModuleCatalogを生成

  • Uriでxamlを指定し、dllを読み込む。処理はここ
    • 以下のように読み込み対象のモジュールを指定する。

      <m:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:m="clr-namespace:Prism.Modularity;assembly=Prism.Wpf">
      
      <m:ModuleInfo ModuleName="ModuleAModule" 
                    ModuleType="ModuleA.ModuleAModule, ModuleA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      
      </m:ModuleCatalog>
      

個人的所感

  • プロジェクト参照が必要な方法は以下。
    • プロジェクトを参照し、IModuleCatalogを用いて読み込み
    • ModuleInfoのインスタンスを生成してIModuleCatalogに追加
  • プロジェクト参照がなくても動的に読み込める方法は以下。
    • App.configを用いた読み込み
    • Moduleが格納されているフォルダを指定して読み込み
    • ModuleInfoをXamlで定義し、そのXamlからModuleCatalogを生成

プロジェクト参照をなくせて、変更が少なく済みそうなModuleが格納されているフォルダを指定して読み込みが良さそうに見える。
他の動的に読み込める方法はバージョンや名前空間が変わるごとにメンテが必要となり大変そう。

おわりに

今回はModuleの読み込む方法について確認しました。
個人的には動的に読み込める恩恵を受けられる方法が良いかと思いますが、Prismが使われているオープンソースでの主流についても把握したほうがよいと思いました。
次回、08-ViewModelLocatorについて見ていこうと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?