可以将NCalc配置为将bool评估为0或1吗?

时间:2015-05-18 13:23:09

标签: ncalc

我很惊讶,因为管理层认为在计算中使用布尔表达式是个好主意,例如

x = (y < 4) * 1 + (z < 8) * 4 ...

我使用NCalc进行配方评估,不幸的是NCalc抱怨因为我试图将整数与布尔相乘。

有没有办法扩展NCalc,所以false被转换为0而true被转换为1或者我是否需要深入挖掘并对NCalc代码库进行一些修改?

1 个答案:

答案 0 :(得分:0)

我最终改变了源代码。为了防止任何人遇到同样的问题,在Numbers.cs中有一堆switch语句,您可以在其中更改每种类型的运算符的行为。在我的特定情况下,是Multiply(对象a,对象b),我在其中更改了将异常抛出到此的默认行为:

case TypeCode.Int32:
   switch (typeCodeB)
   {
      case TypeCode.Boolean: return ((bool) b) ? (Int32)a : 0;
   }
...