WPF Prism アプリケーションを構築しています。さまざまなモジュール プロジェクトに取り組んでいるさまざまな開発者がおり、複数のモジュールがメインのアプリケーション シェルに挿入されています。メイン アプリケーションも別のプロジェクトです。また、さまざまなアプリケーションでモジュールを使用できるようにしたいと考えています。すべてのアプリケーションでリージョンに同じ名前を付ける必要はありません。
たとえば、2 つの異なるアプリケーションで使用するモジュールがあるとします。あるアプリケーションでは、その開発者がモジュールの領域に「DetailsRegion」という名前を付け、別のアプリケーションでは、その開発者が「ResultsRegion」という名前を付けることがあります。
私が見つけることができるすべての例は、モジュールのクラス定義でリージョン名をハードコーディングすることにより、ビューをリージョンに登録します。
myRegionManager.RegisterViewWithRegion("RegionNameHere", GetType(ModuleViewType))
私がやりたいことは、リージョン名をメイン アプリケーションの app.config ファイルに入れ、この名前をモジュールに渡すことです。このようなもの:
メインのシェル アプリケーションの app.config:
<Modules>
<SearchModule>
<add key="RegionName" value="SearchRegion" />
</SearchModule>
</Modules>
そして、モジュールのクラス ファイルで:
Dim settings As NameValueCollection = CType(ConfigurationManager.GetSection("Modules/SearchModule"), NameValueCollection)
Dim regionName as string = settings("RegionName")
myRegionManager.RegisterViewWithRegion(regionName, GetType(SearchModuleType)
ある意味で、これはモジュールをシェルから、またモジュール同士を完全に分離するための最後のステップです。
これは、モジュールのビューで完全に機能します。ただし、ConfigurationManager はそのレベルでは使用できないため、モジュールのクラス定義ファイルでは実行できません。
これを行うには、モジュールのapp.configの ApplicatonSettings セクションにリージョン名を入れます。しかし、これはモジュールを 1 つの場所に格納して複数のアプリケーションでロードできるようにするという目的を無効にします。これは、メイン アプリケーションのapp.configにある必要があります。
コードでリージョンの名前をハードコーディングせずに、モジュールのビューをリージョンに登録する方法はありますか? 私たちは何もハードコーディングしないように努めています。ここで本当に必要ですか?