7

asp.net mvc 4でNinjectを使用することに関して、.netでGoogleから入手できる多数のドキュメントをどうするか迷っています

まず、asp.net でコントローラー ファクトリが必要かどうかを知りたいです。

また、コンストラクター注入は、MVC 4 で依存関係注入を行うことができる唯一の方法ですか? プロパティ注入とメソッド注入は、コントローラーで使用すると機能しないようです。

4

2 に答える 2

9

私は専門家ではありませんNinjectが、私が知る限り、私DataSource InterfaceEfDb Class私のアプリケーションの残りの部分をリンクするためにのみ使用しています。

Real Application を中心に構築された優れた本が必要な場合は、Pro ASP.NET MVC 3 Framework, Third EditionNinjectを試し てください。

また

プロ Asp.Net Mvc 4

私が通常関心を持っているコード行はほとんどありません

public class NinjectControllerFactory : DefaultControllerFactory
{
    private IKernel ninjectKernel;

    public NinjectControllerFactory()
    {
        ninjectKernel = new StandardKernel();
        AddBindings();
    }

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        return controllerType == null
                   ? null
                   : (IController) ninjectKernel.Get(controllerType);
    }

    private void AddBindings()
    {
        ninjectKernel.Bind<IDataSource>().To<EfDb>();
    }
}

次に、次のように登録NinjectControllerFactoryしますGlobal.asax.cs

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

ご覧のとおり、このクラスはMethod Injectionusing を使用しprivate void AddBindings()ます。これにより、フォローしている場合は非常に簡単になりますTest Driven Development (TDD)

于 2013-03-11T09:51:08.173 に答える
2

ここのドキュメントを参照してください: https://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-controllers、「実行する必要がある唯一のことは、依存関係に対して Ninject バインディングを構成することです。コントローラ自体は、バインディングを追加しなくても Ninject によって検出されます。」

NInject は、コントローラの依存関係を自動的に設定します (これらのタイプのバインディングがある場合)。

于 2013-05-07T08:52:31.147 に答える