c# - 如何创建一个接受 Controller 参数而不更改子 Controller 的基类?

标签 c# asp.net-mvc-5 ninject.web.mvc

我正在尝试将 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/

相关文章:

c# - 我需要使用哪个 FileSystemWatcher 过滤器来查找新文件

c# - 如何配置 Ninject 以便它为每个 Controller 创建一个实例

asp.net-mvc - NInject 和 MVC 3 - 我应该使用 DependencyResolver 而不是 [Inject] 属性吗?

c# - 如何从 ASP.NET MVC 5 中的代码创建数据库?

c# - ASP MVC - 使用 EF Code First 向所有表添加列

c# - 在 ASP .NET MVC 中更改角色权限

c# - Ninject - 请求范围已被处理

c# - HLSL 计算 - 按顺序处理像素?

c# - 有多个同时写入器(没有读取器)到一个文件。是否有可能在 .NET 中以高效的方式完成?

c# - 这是 Asp.net/Ajax 错误吗? Javascript 错误和对象数据源