为什么dot Core无法识别我精确安装的Unity.Microsoft.DependencyInjection来代替Core中的本机Dependency Injection?安装软件包后,在Program.cs中,我为.UseUnityServiceProvider()添加了这一行,不确定在c-tor中是否应包含任何内容:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseUnityServiceProvider() // added this line, should it have anything in the c-tor as param?
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
然后根据文档(https://github.com/unitycontainer/microsoft-dependency-injection)在Startup.cs中,我在这里注册我的服务:
public void ConfigureContainer(IUnityContainer container)
{
// Could be used to register more types
container
.RegisterType<IServiceA, ServiceA>();
}
但是,当我测试它时,似乎ServiceA仍未注册。尝试激活“ Controllers.ControllerA”时,无法解析类型为“ IServiceA”的服务。再次检查文档,我意识到我缺少此部分:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddControllersAsServices(); <-- Add this line
...
}
但是我没有AddControllersAsServices方法...有什么想法吗?
使用dot net Core 3.1。
您尝试过这个吗?应该给您您所缺少的方法。
services.AddMvc().AddControllersAsServices();