asp.net-mvc-3 - MVC3 Controller 无法识别具有 Ninject 依赖项的基本 Controller

标签 asp.net-mvc-3 ninject nlog petapoco

我已经(正确)连接了 Ninject 来绑定(bind) NLog。这是我的 NinjectMVC3.cs 中的 RegisterService 方法

kernel.Bind<ILogger>().To<NLogger>();

我正在尝试移植到 PetaPoco 并在此处创建了一个基本 Controller :

public class BaseController : Controller
{
    protected PetaPoco.Database _database;
    protected ILogger _logger;
    protected MemberRepository _members;

    public BaseController(ILogger logger)
    {
        _database = new PetaPoco.Database("TalentSiteConnection");
        _members = new MemberRepository(_database);
        _logger = logger;
    }
}

当我像这样继承我的基本 Controller 时:

public class TestController : BaseController
{        
    public ActionResult Index()
    {
        TestViewModel model = new TestViewModel();
        model.Member = _members.Single<Member>(2579);
        return View("Index", model);
    }

}

并尝试运行构建,我得到了

'BaseController' does not contain a constructor that takes 0 arguments

我做错了什么?我以为 Ninject 会解决对构造函数的依赖?

.

最佳答案

TestController 需要该构造函数...

public class TestController : BaseController
{
    public TestController(ILogger logger) : base(logger) {}

...这与 NInject 无关。如果您向 BaseController 添加了一个无参数 ctor 并保持 TestController 不变,您将不会获得记录器注入(inject)。

关于asp.net-mvc-3 - MVC3 Controller 无法识别具有 Ninject 依赖项的基本 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10558400/

相关文章:

asp.net-mvc-3 - MVC2 到 MVC 升级错误

asp.net-mvc - MVC3 将@model 传递给局部 View

c# - 接口(interface)的调度程序实现的 Ninject 绑定(bind)

.net - Ninject 单例初始化

javascript - 无法重载 Ajax.BeginForm 的提交方法

asp.net-mvc - 如何获得物理路径的服务器路径?

c# - .NET Core 2.2 DI 容器中的上下文绑定(bind)?

c# - 使用任务时的 Nlog 时间戳

c# - 动态设置每个 Logger 实例的 Nlog 日志级别 ASP.Net Core 2.x

Nlog 异步和日志序列