c# - IoC 和 ASP.NET MVC Controller

标签 c# asp.net-mvc inversion-of-control

我应该按照这个思路做些什么吗?我正在考虑从 BaseController 继承的所有 Controller 。这是否打破了 IoC 的设计模式?我还应该做什么?

public class BaseController: Controller
{
    protected ICookieService CookieService {
        get {
            return ServiceResolver.Resolve<ICookieService>(new { HttpContext = HttpContext });
        }
    }
    protected IDateTimeService DateTimeService { 
        get {
            return ServiceResolver.Resolve<IDateTimeService>();
        }
    }
    protected ISettingsService SettingsService {
        get {
            return ServiceResolver.Resolve<ISettingsService>();
        }
    }

}

最佳答案

使用构造函数注入(inject)并让 controllerfactory 为您注入(inject)它会简单得多。如果可以,如果可以避免构造函数注入(inject),请不要使用服务定位器(您的 ServiceResolver )。

Adding a controller factory to ASP MVC 上有一些信息

该链接显示了如何使用 StructureMap 执行此操作,看起来您正在使用 Unity,但应该很容易适应。

关于c# - IoC 和 ASP.NET MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/953834/

相关文章:

c# - 在 mvc .net (system.data.common.dbconnection) 中建立连接时出错

c# - ContextMenuStrip 向上或向下滚动按钮

inversion-of-control - CaSTLe Windsor 或 Spring.NET - 优缺点

c# - 结构图 - 同一接口(interface)的两个实现

c# - 将 outlook rtfbody 添加到包含其图像的 richtextbox

c# - 使用 C# Windows 窗体远程关闭 PC?

javascript - 使用 DropDownList 中的多个值填充文本框

c# - 如何在 ASP.NET 中的特定时间运行代码

jquery - MVC : How to bind array in hidden form field value to model collection property

c# - MVC Controller 需要空构造函数,但未使用接口(interface)并抛出错误