c# - 如何检索注入 IConfigurationBuilder 的命令行参数?
问题描述
我想通过 NuGet 包将args
(类型string[]
)传递给我的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[]
对应于args
传递到应用程序中的一个。
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;
}
我的应用程序入口点如下所示(C# 9):
using Microsoft.Extensions.DependencyInjection;
using System;
using var host = HostBuilder.BuildHostContext(args);
using var scope = host.Services.CreateScope();
await host.StartAsync().ConfigureAwait(false);
解决方案
推荐阅读
- javascript - 我如何使用 react-semantic-ui 和功能组件制作排序表?
- python - 我们可以在微服务应用引擎标准环境之间使用服务帐户进行身份验证吗?
- powershell - 如何将powershell数组转换为表
- cassandra-3.0 - 无效查询异常
- reactjs - 如何在 reactjs 组件中动态加载 json?
- python - 如何使用 Python 一次播放两个声音?
- python - 使用 IF 语句的 Python 用户定义函数不起作用
- xamarin.forms - 如何将 stacklayout 内容转换为 xamarin 形式的流
- python - 没有for循环的意大利面条情节?
- optimization - Webpack 4 SplitChunkPlugin 的 maxSize 与 maxInitialRequests