【问题标题】:DependencyResolver.SetResolver(new AutofacDependencyResolver(container)) AdvantageDependencyResolver.SetResolver(new AutofacDependencyResolver(container)) 优势
【发布时间】:2013-08-17 12:23:39
【问题描述】:
DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 

上述代码的作用是让Container来管理Controller实例。 当 Web 请求到达服务器时,服务器会从 Container 中获取一个 Controller 实例来处理该请求。

但是没有Container,服务器会自动创建一个Controller实例。

在Container中管理Controller有什么好处?谢谢。

【问题讨论】:

    标签: asp.net-mvc containers


    【解决方案1】:

    优点是您可以将所有 IoC 类型注册存储在单个容器中,因此可以使用您选择的 IoC 容器(Autofac、Windsor、Unity、Ninject 等)干净地管理它们的依赖关系。如果您的控制器有依赖关系,这可以让您避免在其方法中对它们进行服务定位。

    我为 Unity 提供了一个使用示例 here。我在自己的项目中使用 Autofac,但遵循相同的模式。

    【讨论】:

    • 所以你的意思是这样的:如果我们让 Unity 来处理 Controller,在一个控制器中,我们只写 private UserService _userService; public UserController(UserService service){ _userService = service; } 如果我们让 MVC 框架来处理 Controller 的实例创建,我们需要写private UserService _userService; public UserController(){ _userService = new UserService(); }这样可以吗?像解耦一样有没有其他优势?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多