。net Core为何不识别在Unity.Microsoft.DependencyInjection中注册的服务?

问题描述 投票:0回答:1

为什么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。

c# dependency-injection unity-container core
1个回答
0
投票

您尝试过这个吗?应该给您您所缺少的方法。

services.AddMvc().AddControllersAsServices();
© www.soinside.com 2019 - 2024. All rights reserved.