【发布时间】:2020-08-13 13:06:46
【问题描述】:
IServiceCollection 有许多扩展名 - 在我的例子中,我使用 AddHttpClient。
我的场景是我在Startup.cs 的ConfigureServices 方法中注册了一般的东西,其中IServiceCollection 用于注册服务。仅在特定项目中需要的所有内容都在相应项目的扩展方法中注册,但由于 DryIoc 容器必须集成到 ASP .NET Core 项目中,因此使用 DryIoc IContainer。
现在我有一个只在特定项目中需要的 HttpClient。因此,我想将它的注册放在相应的项目中。问题是我想使用通常只能与 IServiceCollection 一起使用的 AddHttpClient。
我的问题:有没有办法在我的其他项目中使用它。也许通过从 DryIoc 容器或其他东西中获取它。
这是所描述文件的一般结构:
Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.RegisterSomeService();
// register other stuff
}
}
Program.cs
public class Startup
{
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseServiceProviderFactory(new DryIocServiceProviderFactory())
.ConfigureContainer<Container>(SomeProject.ContainerSetup.Initialize);
}
ContainerSetup.cs 在 SomeProject
public static class ContainerSetup
{
public static void Initialize(HostBuilderContext hostContext, IContainer container)
{
container.Register<SomeService>();
// register other stuff
// here I want to use AddHttpClient
}
}
【问题讨论】:
标签: c# asp.net-core dependency-injection dryioc