1

MVC4 を使用して新しいプロジェクトを開始しており、依存性注入を使用したいと考えています。過去に使用したことはありませんが、今は使用するのに適しているようです。

MVC4 をサポートするようになった DI ツールと、最も簡単にセットアップできるようになった DI ツールを教えてください。プロジェクトが小さいので、私のニーズはかなり単純です。私にとって最も重要なのは、習得と構成が容易なシステムです。

4

3 に答える 3

5

MVC 4 Beta プロジェクトで Ninject.MVC3 NuGet パッケージを使用して成功しました。

// Global.asax.cs

public static void Configure(HttpConfiguration config)
{
    var kernel = new StandardKernel();
    RegisterServices(kernel);

    // For ApiControllers
    config.ServiceResolver.SetResolver(
        t => kernel.TryGet(t),
        t => kernel.GetAll(t));

    // For Controllers
    DependencyResolver.SetResolver(
        t => kernel.TryGet(t),
        t => kernel.GetAll(t));
}

public static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IRepository>().To<Repository>();
}

protected void Application_Start()
{
    ...

    Configure(GlobalConfiguration.Configuration);
}
于 2012-02-18T22:54:29.197 に答える
2

私はMVC4を知りません(私はまだそれで遊ぶ機会がありませんでした)が、DIコンテナーとしてNinjectをお勧めします。おそらく、Ninject MVC3プロジェクト(nugetから)をソリューションにインストールするだけで、MVC4でうまく機能する可能性があります。使用しない場合:

DependencyResolver.SetResolver(new NinjectDependencyResolver(myKernal));     

ここでブログに載せられましたhttp://blogs.microsoft.co.il/blogs/gilf/archive/2010/10/17/dependency-injection-in-mvc-3-was-made-easier.aspx

ブログ投稿はユニティに適用されますが、Ninjectについてもほぼ同じです。依存関係リゾルバーを実装して、ninjectをラップし、global.ascxファイルに配置します。

于 2011-12-23T05:16:57.720 に答える
0

何らかの理由で、NinjectDependencyResolver を使用した Ninject が MVC4 (開発者プレビュー) で機能しませんでした。

依存関係を解決するために 2 つの匿名関数を使用する SetResolver の別のオーバーロードを使用して解決しました。

IKernel kernel = new StandardKernel();    
kernel.Bind<...>().To(...);
DependencyResolver.SetResolver( t => kernel.Get(t), t => kernel.GetAll(t) );
于 2012-01-25T00:14:04.387 に答える