0

最初に次のスレッドをお読みください。

C# と Visual Studio 2005 のアセンブリ間の循環参照

インターフェースを実装することで問題は解決しますが、目標を達成することはできません。

私の目標は、UI レイヤー/アセンブリからの BO レイヤー/アセンブリのみで動作することです。きれいなレイヤー間の参照を維持できるように。

UIレイヤー/アセンブリのBOレイヤー/アセンブリとORMapperレイヤー/アセンブリの両方に参照を追加したくないので。

UI レイヤー/アセンブリ内から BO レイヤー/アセンブリのみを操作したい。

その間、DIではなくリフレクションを使用することでのみ可能であると誰かが私に提案しました。本当?

4

1 に答える 1

0

ORM レイヤーを BO レイヤーの背後に隠したいと強く主張している場合でも、依存関係の挿入が役に立ちます。ただし、UI スレッドから DI ライブラリを参照することから逃れることはできないことに注意してください。これは、そこからビジネス オブジェクトが取得されるためです。

アプローチ:

  • Userデータをロードしてオブジェクトに入力するメソッドを含むインターフェイスを作成する
  • このインターフェースを ORM プロジェクトに実装します
  • 起動時に、何らかの DI コンテナーを使用して ORM 実装をインターフェイスに登録します (使用する DI ライブラリの詳細を参照してください。たとえば、軽量なものについては www.ninject.org を参照してください)。
  • Userデータをロードする人口インターフェースのインスタンスを取るコンストラクターをオブジェクトに与えます。

次に、オブジェクトが必要になったときにUser、DI ライブラリにオブジェクトの作成を依頼すると、DI ライブラリがオブジェクトを構築Userし、ORM 実装への参照を与えます。「ユーザー名」と「パスワード」に値を完全に入力できるようにするには、DI 呼び出しにもいくつかのプロパティを挿入する必要があります。

これは正確にはDIが発明されたものではないことに注意してください...アプリケーションコードは、実際にはORMを直接処理して、ビジネスオブジェクトを作成/読み取り/更新/削除することになっています。

于 2009-05-29T07:19:45.753 に答える