3

Prism を使い始めたばかりで、MSDN のドキュメントに頼って教えてもらっています。特に、モジュールの主題に関して、今私を混乱させている段落があります。

「モジュールがロードおよび初期化された後、モジュール インスタンス参照が Prism によって保持されないため、モジュール アセンブリをアンロードできません。そのため、初期化の完了後にモジュール クラス インスタンスがガベージ コレクションされる可能性があります」

「モジュール インスタンスの有効期間はデフォルトでは短命です。Initialize が呼び出された後、モジュールへの参照が解放されます。モジュール インスタンスへの強力な参照チェーンを手動で確立しないと、ガベージ コレクションが実行されます。」

私はこれに少し混乱しています - これの意味は何ですか?

IModule から派生したクラスはクラス ライブラリの実際の実装ですか、それとも実際のクラス ライブラリをロードする Prism を担当する単なるメタデータ クラスであり、アセンブリが AppDomain にロードされると、いつでもそこからコードを呼び出すことができますか?

私は混乱しています - 今、これらの 2 つの段落から得た結論は、モジュールは Prism アプリケーション全体で使用されるたびに再インスタンス化する必要があるということですか?

4

1 に答える 1

3

派生元のクラスには、IModuleビューをリージョンに登録するなど、1 回限りの初期化コードが含まれている必要があります。IModuleモジュールをロードすると、派生クラスのインスタンスが作成され、Initializeメソッドが呼び出されて、モジュールがロードされたと見なされます。派生クラスのインスタンスはIModule初期化後に失われますが、モジュールには引き続きアクセスできます。

結論: いいえ、モジュールを使用するたびに再ロード/初期化する必要はありません。ロード/初期化は 1 回だけで、その後はすべてセットアップする必要があります。

于 2012-08-01T01:58:36.370 に答える