Ninject和Log4Net

Jos*_*osh 3 ninject inversion-of-control ninject-extensions

我似乎无法获得ninject自动创建ILogger的实例.我在我的测试应用程序中设置了log4net并正确配置但由于某种原因,当我实例化IHouseholdRepository时,它无法解决ILogger.

根据这篇文章,我已经做了我需要做的一切: 如何在我的MVC3项目中正确配置Ninject.Extensions.Logging.Log4Net

[TestMethod]
public void TestMethod1()
{
    var kernel = new StandardKernel();
    kernel.Bind<IHouseholdRepository>().To<HouseholdRepository>();

    var repo = kernel.Get<IHouseholdRepository>();
    var hh = repo.Find(123456);
}
Run Code Online (Sandbox Code Playgroud)
public HouseholdRepository(ILogger logger, string username)
{
    _logger = logger;
    _username = username;
    _dbContext = new HouseholdDbContext(logger);  // I want to couple my HouseholdDBContect to my repository as it's not going to work with any other DbContext
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

测试方法Rxxx.Tests.LoggingTester.TestMethod1引发异常:Ninject.ActivationException:激活ILogger时出错没有匹配的绑定可用,并且该类型不可自绑定.激活路径:2)将依赖ILogger注入到HouseholdRepository类型的构造函数的参数logger中1)对IHouseholdRepository的请求

建议:1)确保已为ILogger定义了绑定.2)如果在模块中定义了绑定,请确保已将模块加载到内核中.3)确保您没有意外创建多个内核.4)如果使用构造函数参数,请确保参数名称与构造函数参数名称匹配.5)如果使用自动模块加载,请确保搜索路径和过滤器正确无误.

小智 6

我刚遇到同样的问题,发现这是因为我忘了添加Ninject.Extensions.Logging.Log4net nuget包.