C# ASP.NET核心依赖项注入中的手动控制器注册

C# ASP.NET核心依赖项注入中的手动控制器注册,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我需要覆盖ASP.NET Core对某个控制器的默认注册 我尝试了下面的方法,但它解决了自动注册的问题 services.AddTransient((provider) => new MyController(...)); 如何覆盖此选项?默认情况下,使用类型激活来解析控制器,该类型激活可归结为使用与Activator.CreateInstance等效的框架来创建控制器实例。这些控制器的依赖项来自DI容器,但控制器本身不是 幸运的是,有一种方法可以让框架也为控制器使用DI,即使用。下面是

我需要覆盖ASP.NET Core对某个控制器的默认注册

我尝试了下面的方法,但它解决了自动注册的问题

services.AddTransient((provider) => new MyController(...));

如何覆盖此选项?

默认情况下,使用类型激活来解析控制器,该类型激活可归结为使用与
Activator.CreateInstance
等效的框架来创建控制器实例。这些控制器的依赖项来自DI容器,但控制器本身不是

幸运的是,有一种方法可以让框架也为控制器使用DI,即使用。下面是一个示例(在
ConfigureServices
中):


如果我们使用的是ASP.NET 3+,我认为等效的是
services.AddControllersWithViews().AddControllersAsServices()
或similar@PatrickSzalapski是的,没错。我认为您仍然可以使用
AddMvc
,但是文档中推荐了其他方法,等等。
services.AddMvc().AddControllersAsServices();