0

我只是感到意外,因为管理层认为在计算中使用布尔表达式是个好主意,例如

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

我使用 NCalc 进行公式评估,不幸的是 NCalc 抱怨因为我试图将整数和布尔值相乘。

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

4

1 回答 1

0

我最终更改了源代码。以防万一有人遇到同样的问题,Numbers.cs 中有一堆 switch 语句,您可以在其中更改每种运算符的行为。在我的特殊情况下,我将默认行为从引发异常更改为 Multiply(object a, object b):

case TypeCode.Int32:
   switch (typeCodeB)
   {
      case TypeCode.Boolean: return ((bool) b) ? (Int32)a : 0;
   }
...
于 2015-05-19T08:22:56.033 回答