我是 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/