既存の .NET アプリケーションのプラグイン解決のソリューションとして MEF を研究しています。
私が見つけたすべての例で、メイン アプリケーションは CompositionContainer のインスタンスを作成し、container.ComposeParts(this) を呼び出します。
問題は、私のアプリケーションが完全に MEF で構築されているわけではないため、オブジェクト グラフに MEF コンポーネントのない穴が開いていることです。したがって、私のオブジェクト階層は次のようになります。
アプリケーション (MEF コンテナー) -> ObjectB (MEF なし) -> ObjectA (MEF インポートが必要)
このオブジェクト階層では、アプリケーションで container.ComposeParts(this) を呼び出して、アプリケーションが ObjectB を作成し、ObjectA のインポートを満たすことを期待することはできません。
アプリケーションの起動時よりも後で ObjectA を作成できるように、CompositionContainer をグローバルに公開することは良い方法ですか?それとも、線形 MEF オブジェクト グラフをサポートするためにアプリケーション全体を再構築する必要がありますか?