2

私は依存性注入から始めていますが、基本クラスに依存性を注入するのに問題があります。

BaseController他のコントローラーが継承するコントローラーがあります。この基本コントローラー内で、ユーザーが現在のページを表示するための適切な権限を持っているかどうかの判断、いくつかのセッション変数の存在の確認など、いくつかのチェックを行います。

この基本コントローラー内に Ninject を使用して注入したい依存関係がありますが、他の依存関係と同じようにこれを設定すると、コンパイラーから次のように通知されます。

エラー 1 'MyProject.Controllers.BaseController' には、0 引数を取るコンストラクターが含まれていません

これは理にかなっていますが、この依存関係を注入する方法がわかりません。ベースコントローラーを使用するこのパターンを使用する必要がありますか、それともより効率的/正しい方法でこれを行う必要がありますか?

4

2 に答える 2

11

BaseController コンストラクターは次のようにする必要があります

BacseConctoller(Info info)
{
    this.info = info
}

次に、すべての継承クラスのコンストラクター

ChildController(Info info):base(info)
{
}

この場合、基本コントローラ クラスに Info オブジェクトを注入できます。

于 2010-05-28T12:59:32.690 に答える
1

マークはその通りだ

BaseClass(dependantObject object)
{
 Object = object;
}

したがって、すべてのサブクラスが基本動作にアクセスできるように依存オブジェクトを満たすには、サブクラスでインジェクションを使用し、単純に基本コンストラクターをチェーンして、「Ninjected」オブジェクトを渡します。

 SubClass() : this(null) {}

 SubClass(dependantObject object) : base(object)
  {

  }

ハッピーコーディング!

于 2010-05-30T20:09:13.390 に答える