我正在尝试将 ninject 添加到以下设置中 -
public class BaseController : Controller
{
protected ILogger Logger {get;}
public BaseController() { Logger = new MyLogger(); }
}
public class Controller1Controller : BaseController { ... }
public class Controller2Controller : BaseController { ... }
....
public class ControllerNController : BaseController { ... }
使用 ninject,向 BaseController 添加 ILogger 参数效果很好 -
public class BaseController : Controller
{
protected ILogger Logger {get;}
public BaseController(ILogger logger) { Logger = logger; }
}
但现在还需要在每个子 Controller 中添加一个构造函数,因为基类不再具有无参数构造函数 -
public class Controller1Controller : BaseController {
public Controller1Controller(ILogger logger) : base(logger) { }
}
有超过 50 个子 Controller ,如果我们必须添加/删除更多依赖项,那么将来可能会成为一个维护问题。此外,添加到每个 Controller 的代码完全相同。
有没有办法保持子 Controller 不变(没有任何构造函数),但仍然对 BaseController 进行更改?
最佳答案
抱歉,没有。
作为替代解决方案,您可以从 Ninject 获取 ILogger:Using property injection instead of constructor injection
关于c# - 如何创建一个接受 Controller 参数而不更改子 Controller 的基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41691548/