0

DIを使用する3つのプロジェクトがあります。私のプロジェクトはASP.NET MVC 3サイトです。ブートストラップを追加したnugjectからninject MVCパッケージをインストールしました。私は縛りを登録しました。ASP.NET MVC 3でのNinject注入の問題

NinjectMVC3.cs

 private static void RegisterServices(IKernel kernel) 
     { 
      kernel.Bind<IUserService>().To<UserService>(); 
     } 

私はUserServiceのとIUserServiceが含まれている別のプロジェクトを持っています。そのプロジェクトでは、自分のサービスを作成するためのシングルトンファクトリクラスも持っています。

public class ServiceFactory : BaseFactory<ServiceFactory> 
    { 
     [Inject] 
     public IUserService UserService { get; set; } 
    } 

ServiceFactory.Instance.UserServiceを呼び出すと上記が常にnullになる理由はありますか?

答えて

2

推測:ほとんどの場合、工場はNinjectによって作成されていません。

しかし、依存性注入を行うときにシングルトンパターンを使用しないでください。これは解決しやすいはずです。

  1. IUserServiceを、それを知る必要があるオブジェクトのコンストラクタに渡します。シングルトンkernel.Bind<IUserService>().To<UserService>().InSingletonScope();
+0

として、それをバインド

  • は、まあ、私はまだこのリンクhttp://www.shahnawazk.com/2010/12/dependency-injection-in-aspnet-mvc-3.htmlとをやってに切り替えIヌルを得ています。カーネル設定がヒットします。また、私は多分1つのコントローラ上に複数のサービスを持ち、その中に5または6つのパラメータを持つことを嫌うでしょう。私はむしろ特性注入をしたいと思う。 –

    +0

    私はちょっと混乱しています。このリンクはシングルトンパターンを使用することを推奨しません。また、あなたがコンストラクタに多くの依存関係を持たなければならない場合は、コンストラクタの差し迫った問題ではなく、単一の責任の原則に正しく従わないようにしてください。 –

    +0

    さらに、https://github.com/ninject/ninject.web.mvc/wiki/MVC3をNinjectのMVCブートストラップとして使用するにはsuccest –

    関連する問題