1

私は次のように構成されたソリューションを持っています:

  • モデルアセンブリ
  • データアセンブリ-リポジトリインターフェイスと基本リポジトリクラスを定義します
  • ORMアセンブリ-リポジトリインターフェイスを実装し、基本リポジトリクラスを継承します^
  • ビジネスアセンブリ-データアセンブリへの参照があり、MEFを介してORMオブジェクトを動的にプルします(ORMアセンブリへの明示的な参照はありません)
  • UIアセンブリ

このようにして、他の何かを使用することにした場合、ORMを簡単に交換できます。

Unityで同様の機能を使用できるかどうか知りたいです。ビジネスロジックを基盤となるORMから切り離したいと思います。私が読んだところによると、Unityは主にコンパイル時に機能し、MEFは実行時に機能します。そうは言っても、私のビジネスレイヤーがORMを参照せず、代わりにデータアセンブリから実装するインターフェイスだけを参照するように、単一性と切り離すことは可能ですか?Unityは、実装アセンブリを参照せずに、インターフェイスを実装するものをどのように定義できますか?

現在、MEFでは、ORMへの参照を持つアセンブリはありません(ビジネスレイヤーが実行時にORMを動的にプルしてパーツを検出し、インターフェイスをオブジェクトで埋める場合を除く)。私はこれらの方針に沿って作業を続けたいと思います。Unityでそれができるかどうか知りたいです。

4

1 に答える 1

1

Unityで同じことを行うには、通常、ORMインターフェイスとそれらの実装を別々のアセンブリに入れます。

たとえば、Project.Orm.Interfaceアセンブリでは、ORMが実装する必要のあるインターフェイスを定義します。ソリューションの残りの部分には、への参照がありますProject.Orm.Interface。このように、アプリケーションのどの部分にも具体的なORM実装への参照はありません。

Project.Orm.ConcreteImplementationアセンブリは、実装するインターフェイスタイプを使用して、コンテナ内の具象型も参照およびProject.Orm.Interface登録します(依存コードが、実装するインターフェイスを要求することで型を解決するのと同じです)。

Prismのコンテキストでは、モジュールの初期化時にコンテナに型IModuleをロードして登録することが動的に検出されます。Project.Orm.ConcreteImplementation

于 2011-04-04T13:43:31.180 に答える