在ASP.NET Core依赖项注入中手动注册控制器

Eri*_*sen 4 c# asp.net-core-mvc asp.net-core

我需要为某个控制器重写ASP.NET Core的默认注册。

我已经尝试过以下方法,但是可以MyController通过自动注册解决。

services.AddTransient((provider) => new MyController(...));
Run Code Online (Sandbox Code Playgroud)

如何覆盖呢?

Kir*_*kin 10

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

幸运的是,有一种方法可以使框架也将DI用于控制器AddControllersAsServices。这是一个示例(在中ConfigureServices):

services.AddMvc().AddControllersAsServices();
Run Code Online (Sandbox Code Playgroud)