Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9743

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

$
0
0

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

はじめに

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

07-Modules

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

App.configを用いた読み込み

  • App.configで読み込まれるようにどこで設定されているか

    • App.xaml.csでCreateModuleCatalogをオーバーライドして
    returnnewConfigurationModuleCatalog();

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

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

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

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

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

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

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

  • Uriでxamlを指定し、dllを読み込む。処理はここ

    • 以下のように読み込み対象のモジュールを指定する。
    <m:ModuleCatalogxmlns="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:ModuleInfoModuleName="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について見ていこうと思います。


Viewing all articles
Browse latest Browse all 9743

Trending Articles