Visual Studioの設定
それでは、コードを見ていきましょう。ここでは、Visual Studio 2008でC#のコンソールアプリケーションを作成して「CommandLine.dll」に参照設定を行っています。
オプション用クラスの設定
まず、引数の値を格納するOptionsクラスを作成します。ここでは属性を使ってオプション(短縮名・正式名・必須・説明)を設定しています。
引数の値を格納するOptionsクラス
using System.Collections.Generic;
using CommandLine;
using CommandLine.Text;
namespace ConsoleSample
{
//引数を格納するクラス
class Options
{
//(1)Option属性
[Option("x", "numx",Required = true,HelpText = "数字X")]
public int X;
[Option("y", "numy",Required = true,HelpText = "数字Y")]
public int Y;
[Option(null , "desc" ,HelpText = "画面に表示する説明")]
public string Description;
//(2)OptionList属性
[OptionList("o", null,Required = true,
Separator = ',',HelpText = "カンマ区切りの演算子群 (+,-,*,/)")]
public IList Operators;
//(3)HelpOption属性
[HelpOption(HelpText= "ヘルプを表示")]
public string GetUsage()
{
//ヘッダーの設定
HeadingInfo head = new HeadingInfo("ConsoleSample", "Version 1.0");
HelpText help = new HelpText(head);
help.Copyright = new CopyrightInfo("青木 淳夫", 2009);
help.AddPreOptionsLine("Command Line Parser Libraryサンプル");
help.AddPreOptionsLine("構文の例: ConsoleSample.exe -x12 -y 4 -o+,-,/ --desc=12と4で計算");
//全オプションを表示(1行間隔)
help.AdditionalNewLineAfterOption = true;
help.AddOptions(this);
return help.ToString();
}
}
}
Command Line Parser Libraryではフィールドとメソッドに設定できる5種類の属性が存在します。ここでは、Option、OptionList、HelpOption属性を使用しています。
(1)Option属性
Option属性はフィールド(string型、int型等)とオプションを紐づけることができます。例えば[Option("x", "numx")]と宣言すると、短縮名「x」と正式名「numx」をフィールドに紐づけできます。もし「-x 10」や「--numx 10」という引数であれば、10という値がXフィールドにセットされます。
(2)OptionList属性
OptionList属性はIList型のフィールドに値を格納できます。例えば引数に「-o +,-,*」と指定した場合「+」「-」「*」の3つの値がIList<string>に格納されます。区切り文字にカンマを使用するため「Separator = ','」と宣言しています。
(3)HelpOption属性
HelpOption属性はヘルプを出力するメソッドに宣言します。ここではHelpText(ヘルプ文字列)、HeadingInfo(ヘッダ)、CopyrightInfo(コピーライト)といったサポートクラスを使って文字列を生成しています。
「HelpText」に設定したメッセージや「Required」に設定した必須項目が表示されていることがわかります。