ファイルからの入力に基づいて比較をセットアップしようとしています(つまり、2つの値がXMLオプションファイルにあり、読み込んで比較したい)。ジェネリックはこれらのメソッドを組み合わせるために使用できますか?
私はこれを行うことができますが、少し冗長であるようです。私はここに投稿し、ジェネリックスを介して比較を行う方法があるかどうかを確認しました。
ここに私の方法は、以下のとおりです。
// Only equal is supported for strings.
public static bool CompareString(this ComparisionOperator oper, string leftSide, string rightSide)
{
return leftSide == rightSide;
}
public static bool CompareDouble(this ComparisionOperator oper, double leftSide, double rightSide)
{
switch (oper)
{
case ComparisionOperator.LessThan:
return leftSide < rightSide;
case ComparisionOperator.GreaterThan:
return leftSide > rightSide;
case ComparisionOperator.LessThanOrEqualTo:
return leftSide <= rightSide;
case ComparisionOperator.GreaterThanOrEqualTo:
return leftSide >= rightSide;
case ComparisionOperator.EqualTo:
return leftSide == rightSide;
default:
throw new ArgumentOutOfRangeException("oper");
}
}
public static bool CompareDateTime(this ComparisionOperator oper, DateTime leftSide, DateTime rightSide)
{
switch (oper)
{
case ComparisionOperator.LessThan:
return leftSide < rightSide;
case ComparisionOperator.GreaterThan:
return leftSide > rightSide;
case ComparisionOperator.LessThanOrEqualTo:
return leftSide <= rightSide;
case ComparisionOperator.GreaterThanOrEqualTo:
return leftSide >= rightSide;
case ComparisionOperator.EqualTo:
return leftSide == rightSide;
default:
throw new ArgumentOutOfRangeException("oper");
}
}
// Repeated for Int (and maybe GUID)
は私だけでこれらを繰り返す方が良いのですか?
私が持っているキャッチは、文字列を比較することは数字や日付の比較と同じではありません。ジェネリックメソッドを作成して文字列を渡すだけの場合は、文字列の文字数をそれ以下にしようとすると混乱しますか?
周辺を見るComparer .Default(http://msdn.microsoft.com/en-us/library/cfttsh47.aspx) –