C# 在ASP.NET核心中使用外部DI容器解析依赖关系

C# 在ASP.NET核心中使用外部DI容器解析依赖关系,c#,asp.net-core,C#,Asp.net Core,我正在使用ASP.NET Core 3.1为现有应用程序(而不是独立的web应用程序)构建插件。这个现有应用程序有一个全局DI容器,其中已经配置了许多服务,我可以在我的应用程序中使用这些服务(示例中名为\u externalContainer)。我希望能够在我的ASP.NET核心插件中使用过滤器/中间件/控制器等中的一些服务 但是,目前唯一的方法是显式传递回调中的所有服务: new WebHostBuilder() .UseKestrel() .UseStartup<MyS

我正在使用ASP.NET Core 3.1为现有应用程序(而不是独立的web应用程序)构建插件。这个现有应用程序有一个全局DI容器,其中已经配置了许多服务,我可以在我的应用程序中使用这些服务(示例中名为
\u externalContainer
)。我希望能够在我的ASP.NET核心插件中使用过滤器/中间件/控制器等中的一些服务

但是,目前唯一的方法是显式传递回调中的所有服务:

new WebHostBuilder()
    .UseKestrel()
    .UseStartup<MyStartup>()
    .ConfigureServices(x =>
    {
        x.AddSingleton(_externalContainer.Resolve<IServiceA>());
        x.AddSingleton(_externalContainer.Resolve<IServiceB>());
        // many more lines like this
    });
newwebhostbuilder()
.UseKestrel()
.UseStartup()
.ConfigureServices(x=>
{
x、 AddSingleton(_externalContainer.Resolve());
x、 AddSingleton(_externalContainer.Resolve());
//还有很多这样的台词
});
有没有办法避免这种情况?类似于“如果ASP.NET的内部DI容器不知道服务,请将解析委托给
\u externalContainer


注意:
\u externalContainer
没有提供注册类型的总列表,因此无法对它们进行迭代。

这些服务来自何处?它是一些库还是NuGet包?我为MEF与ASP.NET的DI集成做了这样一件事(实际上它是“双向的”,MEF容器也可以解决ASP容器的依赖关系):您能告诉我们什么是
\u externalContainer
,以及当前的应用程序是什么吗?当前应用程序是否为Asp.Net?或者它是
.Net Core
?外部应用程序只是一个.Net Core控制台应用程序。
\u externalContainer
是该应用程序中的DI容器,我可以在插件中使用它来创建服务。我更新了这个问题并做了一些澄清。我认为重要的是你在控制台应用程序中具体使用了哪个DI库?作者可能已经有了Asp.NETDI集成,可能是在一个单独的NuGet中。例如,Autofac就是这种情况。如果不存在现有的适配器,尽管仍然可能,那么实现该适配器所需的代码量是相当大的,至少超出了SO答案的范围。