Ninject不绑定MVC3中BaseController中的对象

Jas*_*rff 1 asp.net-mvc ninject nuget

我刚刚将我的MVC2项目升级到MVC3并使用NuGet库包引用来安装ninject.这创建了一个appstart类,我使用以下代码注入我的IMembershipService类.

public static void RegisterServices(IKernel kernel) {
        kernel.Bind<IMembershipService>().To<AccountMembershipService>();
    }
Run Code Online (Sandbox Code Playgroud)

例如,这适用于我的HomeController.

public class HomeController : Controller
{
    public IMembershipService MembershipService { get; set; }

    public HomeController() : this(null) { }

    public HomeController(IMembershipService service)
    {
        MembershipService = service;
    }
Run Code Online (Sandbox Code Playgroud)

但是,我正在使用BaseController.基类中几乎相同的代码不再有效.

public class BaseController : Controller
{
    public IMembershipService MembershipService { get; set; }
    public UserService UserService { get; set; }

    public BaseController() : this(null, null) { }

    public BaseController(IMembershipService service, UserService userService)
    {
        MembershipService = service;
        UserService = userService ?? new UserService();
    }
Run Code Online (Sandbox Code Playgroud)

如果我打破了基本控制器的构造函数,那么service就是NULL.我从来没有将Ninject用于IOC所以也许答案是显而易见的,但为什么它不会像我想要的那样在基类中注入我的AccountMembershipController?我没有看到有什么不同,虽然我意识到额外的继承水平可能会以某种方式搞乱Ninject.

Sco*_*man 5

你的HomeController来自Controller,而不是BaseController?此外,您有一个BaseController的默认构造函数,它将事物设置为null.为什么你有这个呢?我首先要摆脱那些默认的构造函数.您不应该需要任何默认构造函数.