入門
ソフトウェア開発プロセスにおいて、合計コンポーネント状の開発、コンポーネント間の相互作用好ましくは、独立したテスト。モジュールのPrismは、これを満たします。
このアーキテクチャ図は非常によく概念モジュールのプリズムを説明します
コンフィギュレーションファイル、フォルダ、モジュールの手動ロードされた方法、およびモジュールのロードを確認するため、および依存関係の検証を含むサイクルを繰り返し経て、プリズムのサポート
プリズムためのロード・モジュール
それのソースで直接見て
0、モジュールがロードされました
- モジュールは、主にモジュールを発見するためにModuleCatalogを頼るロード
- ModuleManagerによってロードモジュール、モジュールとモジュールのロード順序を保証するために検証するために、
- ようにロードされたクラスのUI要素を表示してしなければならないモジュールを含むモジュールを、初期化する責任ModuleInitializer。
初期化メソッドを呼び出しPrism.PrismApplicationBase
ディレクトリを作成します
容器にRegisterRequiredTypes注入法ModuleManagerによって、ModuleInitializer、
最後の呼び出しInitializeModules方法、およびModuleManagerによってのRunメソッドを呼び出します
理解するために、2人の名前を見て、最初の発見モジュールおよび検証モジュールである、第2のモジュールはロードされ、初期化されます。
初期化メソッドModuleCatalogBaseルック、そして案の定
検証はもっと面白いです
再現性の検証
モジュール名のないモジュールによって、あなたが例外をスローする場合という、あまりにもそこにロードされているかどうかを判断します
ロード・シーケンス・検証
ModuleBaseで同じ時間を見てで
項目の変更が検証されますたび
LoadModulesWhenAvailableのルックModuleManage検証方法の上にいることを発見
最終ModuleInitializerはモジュールを初期化するために使用を参照してください。LINQは、処理遅延ローディング技術により達成しました。
我々は、この方法がIModleインターフェイスモジュールを実装しなければならないことがわかりました。そして、ここRegisterTypesとOnInitializedメソッドを呼び出します。
モジュールがロードされて読んだ後、次の例を見て
1、のAppSettingによってロード
プロフィールを見てください
初期化時
書き換えCreateModuleCatalogを参照してください、ModuleCatalog制御モジュールは、発見と検証である以前に導入されています。
セクション名は、モジュールでなければなりませんを参照してください。
パースへの依存ロジックをモジュール、そして最終的にはAddModuleメソッドを呼び出します
負荷の関連するUIElement再びModuleAModule。
図2に示すように、スルーコードローディング
もっと簡単なコードをロードすることにより、ModuleCatalogは直接関係モジュールConfigureModuleCatalogのアプローチにそれをロードし、デフォルトを呼び出します。
ModuleAModule内のコード変わらず
説明で明確に説明し、いないされています。このロジック0。
カタログ負荷によって3、
あなたはModuleCatalog、それが作成されたincomingディレクトリのアドレスを作成し、ソースがどのように設計することが表示されていない場合は、ディレクトリをロードすることによって。対応するディレクトリInnerLoad法の内部で発見して、アセンブリを横断することにより、クラスが実装するインタフェースはIModuleを見つけ、それがクラスをロードします。
ソースもまさにそれを見て
公式のソースコードは、データの分離とセキュリティを確保するために、アセンブリをロードするAppDoaminの作成など多くの問題を発見考慮読み取ります。そして、さえアセンブリを反映するためにクラスを作成するにはInnerModuleInfoLoader
このような非難の分布は非常に良いですが、私たちも、ネットワーク上でModuleCatalogクラスをロードするためにモジュールを書くことができます。
図4に示すように、手動で装填
ConfigureModuleCatalogモジュール内のすべての最初には、中にロードされ、InitializationModeをオンデマンドで提供されています
その後、必要なときにモジュールのLoadModuleが積載方法の前にロードされて使用することができます
これは、アンインストールモジュールのインターフェースを提供しなかった注目すべきです。
概要
モジュールの下でこの1本の紹介原理は、実際には、ロードされました
- モジュールを発見する責任ModuleCatalog。
- ModuleManagerによってロードモジュール、モジュールとモジュールのロード順序を保証するために検証するために、
- ようにロードされたクラスのUI要素を表示してしなければならないモジュールを含むモジュールを、初期化する責任ModuleInitializer。
次のスタートが実現MVVMをご紹介します。