在项目中,有好多场景需要动态变换计算公式。这些简单的四则运算公式,对人而言很容易。在如何在程序中保持灵活,就需要多写一些代码。好在遇到类似问题的人已经提供了不少解决方案。

NCalc

https://github.com/MichaelAguilar/NCalc
这是好像是最早的一个,不过好久没有更新了。上次更新是15年。更不支持 .NET Core

Eval Expression

https://eval-expression.net/
功能很强大,但是收费

  1. // From simple expression...
  2. int result = Eval.Execute<int>("X + Y", new { X = 1, Y = 2})
  3. // To complex code.
  4. int result = Eval.Execute<int>(@"
  5. var list = new List<int>() { 1, 2, 3, 4, 5 };
  6. var filter = list.Where(x => x < 4);
  7. return filter.Sum(x => x);");

DynamicExpresso

https://github.com/davideicardi/DynamicExpresso
Dynamic Expresso 很不错,还有一个 web shell ,不过 .NET Core只支持到2.0
image.png