2017-06-17 1 views
0

デフォルトのMVCプロジェクトで、私はAccountControllerに新しいインターフェイスを注入しようとしています。アカウントコントローラにインターフェイスを挿入する方法

private readonly INotificationService _notificationService; 

    private ApplicationSignInManager _signInManager; 
    private ApplicationUserManager _userManager; 

    public AccountController(){} 

    public AccountController(ApplicationUserManager userManager, 
     ApplicationSignInManager signInManager, INotificationService notificationService) 
    { 
     UserManager = userManager; 
     SignInManager = signInManager; 
     _notificationService = notificationService; 
    } 

しかし、私の_notificationServiceは、彼らが空のコンストラクタを使用しているので、私が思うに、常にnullです。

私はこのように、私のコンポーネントを登録するUnity.MVC5を使用しています:

 container.RegisterType<IMessageSender, AuthMessageSender>(); 
     container.RegisterType<INotificationService, NotificationService>(); 
     container.RegisterType<AccountController>(new InjectionConstructor()); 
     container.RegisterType<ManageController>(new InjectionConstructor()); 

私はAccountControllerに私のインターフェイスを注入することができますか見当がつかない。いくつかのアイデアや記事に答えがありますか?

+0

あなたはそれが原因であるかどうかを確認するために、デフォルトのコンストラクタを削除しようとしたことがありますか? – Nkosi

+0

デフォルトのコンストラクタを削除すると、エラーが発生します。 – AFetter

+0

そして、何がエラーです。デフォルトのコンストラクタがないと不平を言っている場合は、DependencyResolverを設定していない可能性があります。または依存関係の1つが初期化時に例外を持ちます。依存性注入がどのようにセットアップされたかを示します。 – Nkosi

答えて

0

代わりに、あなたがこのようなもので、それを解決することができますnew InjectionConstructor()でコントローラーを注入する必要はありません:

DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 
関連する問題