Unity MVC默认是否解析类型?

时间:2016-09-24 02:32:09

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

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

我试图将DbContex个实例注入我的UnitOfWork课程。我注册了实例,但是我注意到DbContex对象已经注入而没有编写用于解析DbContex的代码。

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

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

例如,当我向Controller中注入依赖项时,我必须在GetControllerInstance方法中编写这样的代码:

return MvcUnityContainer.Container.Resolve(controllerType) as IController;

2 个答案:

答案 0 :(得分:2)

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

此过程称为自动布线。没有自动接线,为什么有人会使用DI容器? (Not that I think that you should use one in the first place

答案 1 :(得分:0)

Unity默认情况下“注册”流程中加载的所有具体类型 - 因此您可以使用具体类型调用.Resolve并获取结果(假设该类型的构造函数实际上可以由Unity调用)。

对于接口,您需要将映射注册到具体类型/实例。