commandlineparser / commandlineparser/commandline

Use separate options for enum values

未关闭
#817 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
C#
星标
4.8k
派生
478
PR 合并指标
30 天内没有已合并 PR

描述

Having support for `enum` flags is great! But sometimes you don't want the user to use the actual enum values. In fact, they could easily be re-factored causing breaking changes for existing command line integrations.

It would be nice if you could specify names which would then be used instead of the enum values. E.g. using the [DisplayAttribute](https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.displayattribute?view=net-6.0).

```c#
[Flags]
public enum MyEnum
{
None = 0,
[Display(Name = "a")]
VeryLongEnumValueNameHere = 1,
[Display(Name = "b")]
EvenLongerEnumValueNameHereWithNoRiskForTypos = 2,
[Display(Name = "c")]
WouldBeNiceWithShorterName = 4
}
```

The corresponding command line could look like this: `foo.exe --my-enum-value a|b|c`

Or even better...

**Allow OptionAttribute on enum values?**
We could allow the `OptionAttribute` on enum values and get separate arguments for each enum flag:
`foo.exe -a -b -c`

```c#
[Flags]
public enum MyEnum
{
None = 0,
[Option('a', "long-value", HelpText = "Long value")]
VeryLongEnumValueNameHere = 1,
[Option('b', "even-longer-value", HelpText = "Even longer value")]
EvenLongerEnumValueNameHereWithNoRiskForTypos = 2,
[Option('c', "nice", HelpText = "Would be nice")]
WouldBeNiceWithShorterName = 4
}
```

Feasible?

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。