Expression Builder

入力チェックのライブラリに応用してみた。言語内DSLとしての読みやすさに期待したのだが、それ以上に表現力が広がった。2番目のRangeのように文字列パース方式と組み合わせるとより効果的だった。

// 0=<入力数値<10
ValidatorExpression rule1 = new ValidatorExpression()
        .DecimalType()
        .GreaterThanEq(0)
        .LessThan(10);

// 3日前<=入力日付<本日
ValidatorExpression rule2 = new ValidatorExpression()
        .DateTimeType()
        .Range("[Today-3,Today)");

// 入力数値:10桁以内・必須項目
ValidatorExpression rule3 = new ValidatorExpression()
        .IntegerType()
        .LengthLimit(10)
        .Required();