Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity MVC是否默认解析类型?_C#_Asp.net Mvc_Dependency Injection_Unity Container - Fatal编程技术网

C# Unity MVC是否默认解析类型?

C# Unity MVC是否默认解析类型?,c#,asp.net-mvc,dependency-injection,unity-container,C#,Asp.net Mvc,Dependency Injection,Unity Container,我不熟悉DI场景,我正在使用Unity和asp.net mvc实现一个DI场景 我试图将一个DbContex实例注入到我的UnitOfWork类中。我注册了这个实例,但是我注意到DbContex对象已经被注入,而没有编写解析DbContex的代码 怎么可能呢?Unity是否默认解析实例 我认为我有责任为DI编写“解析代码” 例如,当我将依赖项注入控制器时,我必须在GetControllerInstance方法中编写如下代码: 返回MvcUnityContainer.Container.Resol

我不熟悉DI场景,我正在使用Unity和asp.net mvc实现一个DI场景

我试图将一个
DbContex
实例注入到我的
UnitOfWork
类中。我注册了这个实例,但是我注意到
DbContex
对象已经被注入,而没有编写解析
DbContex
的代码

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

我认为我有责任为DI编写“解析代码”

例如,当我将依赖项注入控制器时,我必须在GetControllerInstance方法中编写如下代码:

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

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


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

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

这个过程称为自动布线。如果没有自动布线,为什么会有人使用DI容器?()

您说Unity默认为“registers”,但我需要知道Unity默认是否“解析”所有已注册的类型。