从下面引用的教程中,有一个控制器:
public class HomeController : Controller
{
MvcNinjectExample.Logging.ILogger _logger;
public HomeController(MvcNinjectExample.Logging.ILogger logger)
{
_logger = logger;
}
public ActionResult Index()
{
_logger.LogMessage("Running index page!");
return Content("Message logged");
}
}
根据以下绑定...
public static void RegisterServices(IKernel kernel)
{
kernel.Bind<ILogger>().To<TextFileLogger>();
}
...实例化时调用TextFileLogger() 。HomeController
正确的?
该教程继续说:
如果您要更改它以使用我们的 EventFileLogger 实现,就像前面的示例之一一样,您将看到您所要做的就是创建实现,使其实现 ILogger,然后将其注册到您的内核绑定中。无需更改任何使用它的控制器。
我的问题是:
如果我创建了一个名为EventFileLogger()
which 实现的新类ILogger
,然后创建了类似的绑定kernel.Bind<ILogger>().To<EventFileLogger>();
,Ninject 如何知道在实例化时使用我的新EventFileLogger()
绑定而不是其他绑定?TextFileLogger()
HomeController
参考。http://stevescodingblog.co.uk/dependency-injection-beginners-guide/