4

コマンドラインパーサーライブラリを使用して、たとえば3つのオプションのセットをマークし、必要な3つのオプションの1つを正確に作成する方法はありますか?

したがって、これらのオプションがあります。

[Option("list-plugins", MutuallyExclusiveSet = "Commands")]
public bool ListPLugins { get; set; }

[Option("list-languages", MutuallyExclusiveSet = "Commands")]
public bool ListLanguages { get; set; }

[OptionList('f', "files", ',', MutuallyExclusiveSet = "Commands")]
public IList<string> Files { get; set; }

ユーザーは一度に1つだけ使用できるようにしたいと思います。

"MyProgram --files a.txt"IEの有効な通話には、次のいずれかのオプションを使用した通話が含まれます "MyProgram --list-languages""MyProgram --list-plugins"

オプションの有無にかかわらず呼び出し中:( "MyProgram"この場合は私の問題です)、無効"MyProgram --files a.txt --list-languages""MyProgram --list-languages --list-plugins"なります。

4

1 に答える 1

2

@PHeiberg、あなたはすべてのオプションをセットの中に入れました、そしてこれはここでCommands説明するように正しいです。

このようにして、パーサーに次のように伝えます。ねえ、ユーザーにこれらの1つを選択させます。

別のセットにバインドされた別のオプションを追加する場合:

[Option MutuallyExclusiveSet = "Other"]
public int Offsets { get; set; }

必要に応じて指定できますが、Commandsセット内のオプションは相互に排他的です。

実際の設計では、要求するものはまだ存在しません(ただし、実装することはできます)。

そうは言っても、私たちはそれがRequired財産として存在し、それがどのように関係しているのかを知っていますか?

1つ以上のオプションにを適用するRequired = trueと、(実際の実装では)自分自身と矛盾し、パーサーを混乱させることになります。

お気軽に問題を開いてください。

実際の実装は動詞コマンドをサポートします。動詞コマンドは設計上相互に排他的であり、1つを覗き見する必要があることに注意してください(オプションに必要な動作)。

多分それはあなたが望むものではないかもしれません、とにかくここでここに説明されています

于 2013-03-04T19:49:05.690 に答える