gpt4 book ai didi

c# - 如何从现有的创建 IServiceCollection?

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:41 25 4
gpt4 key购买 nike

假设我有某种子应用程序需要在主应用程序中注册一些服务以及它自己的一些特定服务。我想知道是否有更好/自然的方法来执行此操作(也许是某种扩展方法?)。这就是我所做的:

public static IServiceCollection ConfigureServices(this IServiceCollection main)
{
IServiceCollection sub = new ServiceCollection();
foreach (var serv in main)
{
sub.Add(serv);
}
return sub;
}

谢谢。

最佳答案

您可以使用IWebHostBuilderConfigureServices 方法来注入(inject)服务集合。然后该实例将传递给 Startup 类的 ConfigureServices 方法。而且我认为扩展方法是可行的方法。但是,在我看来,将扩展方法重命名为 AddRange 是有意义的:

WebHost.CreateDefaultBuilder(args)
.ConfigureServices(servicesCollection =>
{
var mainServiceCollection = ...;
servicesCollection.AddRange(mainServiceCollection);
})
.UseStartup<Startup>();

这里是扩展方法,它是你的稍微修改过的版本:

public static IServiceCollection AddRange(this IServiceCollection current, IServiceCollection main)
{
if(current == null)
{
throw ArgumentNullException();
}

foreach (var serv in main)
{
current.Add(serv);
}

return current;
}

关于c# - 如何从现有的创建 IServiceCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com