2

勉強を始めた後、ある質問について考えていました...必要なすべてのインポートを満たす必要がある場合Prism、なぜ a を使用する必要があるのでしょうか。Service locatorMEF

MEF の Common Service Locator リンク

2つが共存する場合、それがどのような目的に役立つかを理解できませんでした.

それは許可されますかAttributeless Imports(エクスポートはエクスポートを使用して行う必要があると思います)??

共通サービスロケーターのこのリンクも読みましたが、ボットが共存している場合の使用シナリオはよくわかりませんでした。

このRegadsに関するヘルプは役に立ちます... :)

4

1 に答える 1

3

依存性注入サービス ロケーターパターンがあります。どちらのパターンも MEF で使用できます。[Import]またはを使用する場合[ImportingConstructor]、依存性注入を使用しています。一方、コードに次のようなものがある場合:

var someObject = exportProvider.GetExportedValue<ISomeType>();

あなたはサービスの場所を使用しています。

どちらがより適しているかを選択できます。実際、実際のアプリケーションでは、これら 2 つのパターンが混在していることがよくあります。

私の知る限り、Prism は少なくともブートストラップにサービス ロケーションを使用しますが、Prism は特定の DI フレームワークから独立したいため、DI フレームワークを直接使用しません (デフォルトで MEF と Unity のサポートがあります)。そのため、Prism は DI/サービスの場所にアダプターを使用します。これらは別のレベルの抽象化です。

于 2013-01-29T06:02:01.153 に答える