IConfigurationBuilder
,然后以后再检索。我注意到
Microsoft.Extensions.Hosting
有
IConfigurationBuilder
,但是我不确定这些
AddCommandLine
最终到哪里,或者如何访问它们。理想情况下,我希望它们的依赖性注入后来在
args
中定义的类的构造函数,如下所示(
ConfigureServices
)。,例如,我有以下代码。
SomeHostedService
我如何依赖性将这些注入
public static class HostBuilder
{
public static IHost BuildHostContext(string[] args) =>
Host.CreateDefaultBuilder(args).ConfigureHostConfiguration(c =>
{
c.AddCommandLine(args); // Where can I access args later on?
}).ConfigureServices((context, services) =>
{
// Add some services...
services.AddHostedService<SomeHostedService>();
// Would ideally like args dependency injected in SomeHostedService
}).Build();
}
的构造函数。
如果我想明确获取它们,我该如何检索它们?它们是否依附在某个地方?
args
的构造函数应接收到与SomeHostedService
传递到应用程序的IServiceCollection
SomeHostedService
。
string[]
我对应用程序的入口点看起来像这样(C#9):
args
要访问配置提供商,请在您的任何依赖注入类别中包括构造函数中的ICONFIGURATION。
public class SomeHostedService
{
public SomeHostedService(string[] files)
{
_files = files;
}
public void ReadFiles()
{
foreach (var file in _files)
DoSomething(file);
}
private void DoSomething(string filename)
{
// Do something...
}
private readonly string[] _files;
}
要将您的参数绑定到模型,请参见Microsoft Learn上的本文:Https://learn.microsoft.com/en-us/dotnet/standard/commandline/model-binding-
您始终可以通过
environment.getCommandlineargs()访问命令行参数。