「 MEF と PRISM を使用して WPF で複合モジュラー UI アプリケーションを作成する」の記事のガイダンスに基づいて、小さくてシンプルな (今のところ) モジュラー アプリケーションを構築しています。Bootstrapper
これまでのところ、2 つのリージョン、1 つのクラス、およびそれ自体のみをエクスポートする 2 つのモジュール プロジェクト (ModuleA と ModuleC) を持つメイン ウィンドウがあります。またUserControl
、メイン ウィンドウのいずれかの領域に aa ビュー (a ) を配置します。たとえば、次のようになります。
[ModuleExport(typeof(ModuleC))]
public class ModuleC: IModule
{
public void Initialize()
{
IRegionManager regionManager = (IRegionManager)ServiceLocator.Current.GetInstance(typeof(IRegionManager));
regionManager.Regions["Region2"].Add(new MoneyUserControl());
}
}
私のビジョンはMainWindow
、現在使用されている高レベルのアプリ機能によって使用される 1 つの大きな UI 領域を に配置することです。この機能はインポートされたモジュールです。MainWindow
これらのモジュールには多くの共通点があり、現在はモノリシック アプリケーションの一部ですが、アプリケーションの各機能がモジュールとしてインポートされる一方で、基本的には基本的なサービスを提供するフレーム ( ) だけを目指しています。
アクティブなモジュールがメイン ウィンドウにメニュー項目 (コマンド) を提供するようにします。たとえばインターフェイスを使用してこれを「手動で」IModuleWithMenu
実行し、メニューを統合するメインウィンドウのクエリ、またはメインウィンドウの「IMenuHost」インターフェイスを使用して、モジュールにメニューコマンドをプッシュさせるのは非常に簡単です.
しかし、私はすでに MEF を使用しており、ロードされたモジュールのエクスポートとインポートのカタログを持っているため、もっと良い方法があるに違いないと考えずにはいられません。確かに、エクスポートを照会し、コマンドであるエクスポートをフィルター処理して、それらをメニューまたはその他の形式のコマンド呼び出しに結び付けることができますが、MEF は、このような既に作成された、または閉じているようなものを提供しません。最小、したがってバグのリスク。
余談ですが、追加の質問: MEF を使用した複合アプリの作成に関する非常に優れたチュートリアルのコピーまたはリンクを持っている人はいますか (主に WPF ですが、他の人を WPF に適応させることができます)。私が取り組んだ記事は、モジュール、カタログ、および MEF 自体の簡単な紹介にすぎません。私は本当に、本当に技術的で深いものが欲しいです。本の購入も順調かもしれません。