首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种使用Microsoft.Extensions.Configuration将数组作为命令行参数传递的更简单的方法?

是否有一种使用Microsoft.Extensions.Configuration将数组作为命令行参数传递的更简单的方法?
EN

Stack Overflow用户
提问于 2021-12-28 10:08:29
回答 1查看 612关注 0票数 1

我正在开发一个.net通用主机应用程序,我希望通过命令行传递一些配置,然后将其绑定到一个对象:

代码语言:javascript
复制
public class CommandArgs
{
   public string Mode { get; set; }
   public string[] Logins { get; set; }
}

此时,我知道可以像这样传递Logins数组:

代码语言:javascript
复制
--CommandArgs:Logins:0=Login0 --CommandArgs:Logins:1=Login1 ...

问题是“--CommandArgs:Logins:{index}”语句的重复数。我尝试使用开关映射来减少重复句子:

代码语言:javascript
复制
var switchMappings = new Dictionary<string, string>
{
   "--Logins", "CommandArgs:Logins"
};
    
    configBuilder.AddCommandLine(args, switchMappings);

达到以下目的:

代码语言:javascript
复制
--Logins:0=Login0 --Logins:1=Login1

但似乎不是这样的。

在传递数组时是否有使用开关映射或任何更简单的语法的方法?

EN

回答 1

Stack Overflow用户

发布于 2021-12-28 10:40:02

您可以在不使用switchMappings的情况下完成它,并像这样更改args:

代码语言:javascript
复制
//--Logins:0 Login0 --Logins:1 Login1
configBuilder.AddCommandLine(args);
var config=configBuilder.Build();
var logins= config.GetSection("Logins").GetChildren().Select(x => x.Value).ToArray();

测试并运行良好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70505561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档