介绍
因为业务需求,有时候需要直接对控制器进行实例化,但是如果控制器需要一个.Net自带的IOC容器(IServiceProvider)才能运行,如果修改控制器传入的参数可能就太麻烦了,还是需要传入一个容器。
实现
//实例化ServiceCollection
ServiceCollection collection = new ServiceCollection();
//添加IOC容器及其实现类,跟在Startup中添加方法相同
collection.AddTransient<IOC接口容器类, 实现类>();
//生成ServiceProvider
//ServiceProvider实现IServiceProvider接口
//该类没有构造函数不能直接被实例化
var provider = collection.BuildServiceProvider();
//将容器注入到Controller
HomeController controller = new HomeController(provider);