我想设置一个基于文件输入的比较(即两个值在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) –