0

Prism (別名 Composite Application Guidance) を使用して Silverlight 4.0 アプリケーションを構築しています。2 つのモジュールがあり、どちらも ModuleCatalog.xaml で WhenAvailable として定義されます。Application_OnStart はBootstrapperをインスタンス化し、そのRun()メソッドを呼び出します。アプリケーションを起動して実行した後 (実際には、ユーザーは UI のボタンをクリックする必要があります)、モジュールをロードしようとします。

foreach (ModuleInfo mi in moduleCatalog.Modules)
    ...
    Type moduleType = Type.GetType(mi.ModuleType); // moduleType ends up null!

場合によっては、moduleTypeが null になります。null に遭遇したとき、ModuleInfo のStateReadyForInitialization ではなくLoadingTypesであることを確認しました。これは、モジュール用に個別の *.xap ファイルをダウンロードし、それらの型をアプリケーション ドメインに取り込んでいることを意味していると思います。

それで、なにかお手伝いできますか?それらが最終的にすべてロードされたことを知るためにリッスンできるイベントがあることを知っていれば、喜んでブロックします。

4

1 に答える 1

0

Prism を使用する場合は、Prism をバイパスして自分でモジュールを作成しないでください。それは Prism が機能するはずの方法ではありません。Prism はロード完了のイベントを提供しません。これは、実行する必要がないためです。

単純なケース:

モジュール カタログを定義すると、これらすべてのモジュールが徐々にロードされるため、単純なケースでは手動でロードする必要はありません。いくつかのモジュールの依存関係を使用して、ルート Silverlight アプリにスタートアップ モジュールを作成できます。これで、アプリの残りの部分が読み込まれている間、最初のページを表示するのに十分です。

詳細情報が必要:

上記のスニペットから実際に何を達成しようとしているのかはわかりません。そのため、より多くの情報が役立ちますが、Unity を使用してインターフェイスを解決し、直接 Type.GetType() を使用しないでください。通常、モジュール自体を解決する必要はありません。また、Prism でロード オン デマンドの読み込みをトリガーする方法もあります (現時点では手元にないでください...これを更新します)。

ありがとう:

Stack Overflow で私が尋ねた別の質問への回答の手がかりを誤って提供してしまったので、ありがとうございます。

于 2010-09-14T08:11:00.683 に答える