在运行时设置默认命令行选项值

问题描述 投票:1回答:2

我正在使用CommandLine Parser Library解析应用程序中的命令行参数。

在大多数情况下,每次用户运行应用程序时,都有一些选项是相同的。通常,我使用DefaultValue属性,以便如果用户不提供值,则将使用默认值。

[Option('a', "address", DefaultValue = "http://me.com", Required = false, HelpText = "Address of server.")]
public string Address{ get; set; }

我面临的问题是,默认值特定于给定的部署,并且需要在部署后进行配置。我希望用户/管理员能够使用配置文件设置这些选项的默认值。

有人知道如何在运行时更改选项的默认值吗?然后,当启动应用程序时,我可以加载配置文件并相应地设置默认值。

c# command-line command-line-arguments command-line-parser
2个回答
0
投票

我将创建属性作为应用程序设置,然后允许用户使用命令行参数覆盖它们并在运行时计算结果值。这样,您就可以编译默认值,用户可以用配置文件中的自定义默认值覆盖,并且可以在启动时设置一次性覆盖。


0
投票

为了其他人的利益,我今天也面临着同样的问题,我意识到Options可以与C#6 Auto Property Initializers一起很好地工作。

[Option]
public string MyProperty { get; set; } = Properties.Settings.Default.MySetting;

毫无疑问,在C#5和更早的版本中,您可以通过私有支持属性实现相同的目的。

© www.soinside.com 2019 - 2024. All rights reserved.