c# - Unity MVC 默认解析类型吗?

标签 c# asp.net-mvc dependency-injection unity-container

我是 DI 场景的新手,我正在使用 Unity 和 asp.net mvc 实现 DI 场景。

我试图将 DbContex 实例注入(inject)到我的 UnitOfWork 类中。我注册了该实例,但我注意到 DbContex 对象已被注入(inject),而无需编写用于解析 DbContex 的代码。

这怎么可能? Unity 是否默认解析实例?

我认为我有责任编写这个“解析代码”以使 DI 正常工作。

例如,当我将依赖项注入(inject) Controller 时,我必须在 GetControllerInstance 方法中编写如下代码:

返回 MvcUnityContainer.Container.Resolve(controllerType) 作为 IController;

最佳答案

您只需要解析根对象,例如 Controller 类。然后,Unity 会查看此类的构造函数,并会发现它具有一些依赖项(构造函数参数)。然后它会自动尝试解决这些依赖关系。如果这些依赖项本身具有依赖项,它将首先解决这些依赖项...

这个过程称为 Autowiring 。如果没有 Autowiring ,为什么有人会使用 DI 容器呢? (Not that I think that you should use one in the first place)

关于c# - Unity MVC 默认解析类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671927/

相关文章:

c# - 结构图和引用文献,最佳实践是什么?

c# - 将相机名称映射到 opencv 相机索引

c# - 如何在 LINQ 中对列表数组进行分组

c# - Paypal 按钮管理器不接受小数金额

asp.net-mvc - Web 项目需要缺少具有 Razor 语法 3.0.0.0 的 Web 组件 ASP.NET 网页

c# - 单元测试 Web 服务响应

c# - 如果存在则删除 SQL 表/如果不存在则创建(在 C# 中)

c# - 在具有 2 个属性的 LINQ 中分组

asp.net-mvc - 如何在 ASP.Net MVC 3 中选择性地呈现一个部分?

java - 使用 @InjectMocks 注入(inject) String 属性