メインプログラムのコード

続けて、入力された引数をOptionsクラスに展開して計算をするコードを見てみましょう。

メインプログラム(Programクラス)

using System;
using CommandLine;

namespace ConsoleSample
{
  class Program
  {

    //アプリケーションの開始場所
    static void Main(string[] args)
    {

      //(1)コマンドラインパーサーの初期化
      CommandLineParserSettings setting = new CommandLineParserSettings();
      setting.HelpWriter = Console.Error;
      ICommandLineParser parser = new CommandLineParser(setting);

      //(2)オプション用クラスに引数を展開
      Options options = new Options();
      if (!parser.ParseArguments(args, options))
      {
        //パラメータに問題がある場合は、失敗ステータスで終了
        Environment.Exit(1);
      }

      //(3)Optionsクラスの引数を使用
      Console.WriteLine("引数X: {0}", options.X);
      Console.WriteLine("引数Y: {0}", options.Y);
      Console.WriteLine("説明: {0}", options.Description);

      //指定された演算子にて計算(ループ)
      foreach (string calcOperator in options.Operators)
      {
        string msg = "";
        switch(calcOperator)
        {
          case "+":
            msg = string.Format("足し算の結果:{0}", options.X + options.Y);
            break;
          case "-":
            msg = string.Format("引き算の結果:{0}", options.X - options.Y);
            break;
          case "*":
            msg = string.Format("掛け算の結果:{0}", options.X * options.Y);
            break;
          case "/":
            msg = string.Format("割り算の結果:{0}", options.X / options.Y);
            break;
        }
        Console.WriteLine(msg);
      }

      //成功ステータスで終了
      Environment.Exit(0);

    }
  }
}

コンソールアプリケーションを起動するとMainメソッドが呼び出されます。入力された引数はstring配列のargs変数にセットされています。

(1)コマンドラインパーサーの初期化

まずパーサ本体であるCommandLineParserクラスを用意します。引数のエラー時にヘルプを表示するためにCommandLineParserSettingsクラスにも設定をしています。

(2)オプション用クラスに引数を展開

次にParseArgumentsメソッドを呼びだします。このメソッドはargs変数の値をOptionsクラスに展開します。詰め替えに成功すると戻り値はTrueとなりますが、詰め替えに失敗(未定義、型の相違、必須チェック)すると戻り値はFalseとなります。

(3)Optionsクラスの引数を使用

既に引数はOptionsクラスに移し替えられています。そのためOptionsクラスのフィールドにアクセスすれば値を取得できます。このプログラムでは、各フィールドの値をコンソールに表示した後、Operatorsフィールドの演算子を使って計算を行っています。

最後に

このように、Command Line Parser Libraryを使うと簡単にコンソールアプリケーションを作ることができました。このライブラリに興味をもたれた方は、ぜひダウンロードして試してみてはいかがでしょうか。