1

現在、私は MVC を学んでいますが、理解できない問題に遭遇しています。

私がダウンロードしたテスト プロジェクトでは、一部のコントローラーにはパラメーターのないコンストラクターがなく、代わりに多くのパラメーターを持つコンストラクターがあることがわかります。そんなことがあるものか?

つまり、誰かがページにアクセスしたとき、最初にコントローラーを作成する必要があります。コントローラーを作成するものは、パラメーターなしのコンストラクターで作成する必要があります。

MVCで見逃したものだと思います。:)

4

2 に答える 2

4

これはコンストラクター注入として知られており、Ninject や StructureMap などの依存性注入ツールの基礎として使用されます。オブジェクトの疎結合を可能にします。

基本的に、使用してオブジェクトのインスタンスを作成する必要があるときはいつでもnew、そのオブジェクトの具体的な実装に自分自身を密接に結び付けています。これは、テストが不可能ではないにしても、物事を難しくする可能性があります。

void MakeBacon()
{
    var smokey = new Bacon();
}

コンストラクターや依存性注入などの注入方法を使用することで、新しいインスタンスを作成する必要がなくなり、代わりに注入されるため、疎結合になります。

void MakeBacon(IBacon smokey){
   // Make bacon here.
}

これは、コンストラクター注入を説明するスタック交換に関する良い答えです

コンストラクタインジェクションとは?

そして、これはコンストラクターインジェクションに関するマイクロソフトの記事です

コンストラクター インジェクションのオブジェクトに注釈を付ける

于 2013-09-11T16:55:17.033 に答える
4

コードを見ずに最初に考えたのは、(定義されたルールから) 構築されたオブジェクトをコンストラクターに注入する依存性注入 (つまり、Ninject、Autofac など) があるということです。制御の反転と依存性注入のパターンに慣れていない場合は、かなり明確な説明があるスタック オーバー フローの質問があり ます。制御の反転とは何ですか?

何か他のことが起こっている場合は、おそらくコードを含めて、それを確認できるようにすることができます.

于 2013-09-11T16:48:42.160 に答える