0

Common Service Locator Libraryは良いアイデアですが、 「バインディングをある程度一般的なものにすることはできますか?」という疑問が残ります。

確かに、具体的な実装 (Structure Map、Unity など) 間の違いにより、バインディングの完全に共通の概念を持つことは不可能です。しかし、 80/20 ルールを満たすことは可能なはずです。はい?

言い換えれば、ほとんどのバインディング シナリオをカバーする単純な共通のバインディング セットを用意してみませんか? おそらく、最も単純な一般的なバインディングは、単純にタプルを取ります:

requested type, bound type, life-time-management-enum

誰かが前にそのようなものを作りましたか?

4

1 に答える 1

0

Common Service Locator Library は良い考えです

CSL は、フレームワーク開発者向けの抽象化としてのみ意図されています。フレームワーク以外のアプリケーションは、依存性注入パターンを適用する方がはるかに優れているため、サービス ロケーターの必要性を完全に取り除くことができます。

ほとんどのバインディング シナリオをカバーする単純な共通のバインディング セットを用意してみませんか?

これを行うことができる独自のカスタム抽象化を定義するのは非常に「簡単」です。しかし、問題はこの 80/20 にあります。各コンテナーには違いがあるため (そして悪魔は細部に宿る)、この抽象化は最も単純なアプリケーションでのみ機能します。それ以外の場合は、コンテナと直接やり取りするフォールバックが必要になり、抽象化が役に立たなくなります。

しかし、これはすべて、コンテナからの切り替えの問題が基本的な「要求された型、バインドされた型、ライフタイム管理列挙型」ステートメントを書き直すことにあると仮定していますが、これは誤った仮定です。これらの行の変更は数分で完了します (すべての登録コードが 1 か所にあるため)。ただし、あるコンテナーから別のコンテナーに切り替える際の難しさは、バッチ登録、デコレーターの登録、インターセプト、ライフタイム スコープ、register-resolve-release などの機能のサポートの違いと、アプリケーションが特定のフレームワーク機能に依存することです。 .

于 2012-10-28T15:43:52.617 に答える