能否将 NCalc 配置为将布尔值计算为 0 或 1?
Can NCalc be configured to evaluate a bool to 0 or 1?
我只是感到惊讶,因为管理层认为在计算中使用布尔表达式是个好主意,例如
x = (y < 4) * 1 + (z < 8) * 4 ...
我使用 NCalc 进行公式计算,不幸的是 NCalc 抱怨,因为我试图将一个整数和一个布尔值相乘。
有没有办法扩展 NCalc,以便将 false 转换为 0,将 true 转换为 1,或者我是否必须深入挖掘并对 NCalc 代码库进行一些修改?
我最终更改了源代码。以防万一有人 运行 遇到同样的问题,Numbers.cs 中有一堆 switch 语句,您可以在其中更改每种类型运算符的行为。在我的特定情况下,即 Multiply(object a, object b) ,我将默认行为从抛出异常更改为:
case TypeCode.Int32:
switch (typeCodeB)
{
case TypeCode.Boolean: return ((bool) b) ? (Int32)a : 0;
}
...
我只是感到惊讶,因为管理层认为在计算中使用布尔表达式是个好主意,例如
x = (y < 4) * 1 + (z < 8) * 4 ...
我使用 NCalc 进行公式计算,不幸的是 NCalc 抱怨,因为我试图将一个整数和一个布尔值相乘。
有没有办法扩展 NCalc,以便将 false 转换为 0,将 true 转换为 1,或者我是否必须深入挖掘并对 NCalc 代码库进行一些修改?
我最终更改了源代码。以防万一有人 运行 遇到同样的问题,Numbers.cs 中有一堆 switch 语句,您可以在其中更改每种类型运算符的行为。在我的特定情况下,即 Multiply(object a, object b) ,我将默认行为从抛出异常更改为:
case TypeCode.Int32:
switch (typeCodeB)
{
case TypeCode.Boolean: return ((bool) b) ? (Int32)a : 0;
}
...