0

私は主なプロジェクトを持っており、2つ目は複数ありUserControlsます。私はメイン プロジェクトでこのユーザー コントロールを使用します。メイン プロジェクトからUserControlsいくつかのクラス (BusinessLogicおよびを担当DataAccessLayer) を使用する必要があります。

両方のプロジェクトを接続するには? これで、循環依存が作成されます。

4

4 に答える 4

2

考えられるアプローチの 1 つは、ユーザー コントロールを実装ではなくサービスの仕様にバインドすることです。

技術的には、これは、メイン プロジェクトと仕様を含むコントロール ライブラリの間で共有される別のライブラリがあることを意味します。

public interface IBusinessLogic
{
   void DoSomething();
}

次に、ユーザー コントロール ライブラリでインターフェイスに対してコードを記述し、実装を挿入できるようにします。

public MyControl : UserControl
{
   private IBusinessLogic _logic;
   public MyControl( IBusinessLogic logic )
   {
      this._logic = logic;
   } 
   // use the _logic
}

メイン モジュールでは、サービスの実装を提供し、それをコントロールに挿入します。

public MyBusinessLogic : IBusinessLogic { }

MyControl control = new MyControl( new MyBusinessLogic() ); // inject the implementation
于 2012-05-28T14:41:27.880 に答える
1

BusinessLogicメインプロジェクトを作成してDataAccessLayer内部に配置しないでください。それぞれを独自のプロジェクトで作成し、メインプロジェクトから参照します。

注:より良いオフ-DataAccessLayerからのみ参照する必要がBusinessLogicあり、メインプロジェクトはからのみ参照する必要がありますBusinessLogic

しかし、これは一言で言えばあなたの問題に対する短い答えにすぎません。3層アーキテクチャについて詳しくはこちらを検索することをお勧めします。

于 2012-05-28T14:37:23.423 に答える
0

ビジネスロジックとデータアクセス層を3番目のプロジェクトに配置します。これを「共通」と呼びます。

于 2012-05-28T14:38:04.987 に答える
0

両方のプロジェクトから共有ロジックを取り出して、3番目のプロジェクトに入れる必要があると思います。

例:メインプロジェクトにユーザーが制御するロジックも必要な場合は、そのロジックを別のプロジェクトに抽出し、両方のプロジェクトから参照する必要があります。

于 2012-05-28T14:38:24.517 に答える