c# - C# 中的用户定义公式

标签 c# eval

我有一个应用程序,用户可以为每个对象指定他自己的测量点。然后,这些测量值将用于将对象分类为 A - 需要服务,B - 服务应在 X 天内安排,C - 不需要 ATM 服务

然而,这些对象几乎可以是任何东西,我们无法硬编码如何将测量值聚合到分类,我们需要将其留给用户。

对于我们如何为用户提供输入自己的公式的方法,您有什么建议吗?它不一定是防白痴的,我们没有那么多客户,所以只要他们能向我们解释,我们就可以帮助他们。

最佳答案

我写了一个开源项目,Dynamic Expresso ,它可以将使用 C# 语法编写的文本表达式转换为委托(delegate)(或表达式树)。表达式被解析并转换为 Expression Trees不使用编译或反射。

你可以这样写:

var interpreter = new Interpreter();
var result = interpreter.Eval("8 / 2 + 2");

var interpreter = new Interpreter()
                .SetVariable("service", new ServiceExample());

string expression = "x > 4 ? service.SomeMethod() : service.AnotherMethod()";

Lambda parsedExpression = interpreter.Parse(expression, 
                        new Parameter("x", typeof(int)));

parsedExpression.Invoke(5);

我的作品基于 Scott Gu 文章 http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx .

关于c# - C# 中的用户定义公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644146/

相关文章:

c# - Azure 自定义日志记录

python - 为什么此字符串不适用于 ast.literal_eval

matlab - Matlab 中 eval 函数内的控制流

c# - LINQ FirstOrDefault 与谓词,如果没有找到只是 FirstOrDefault

c# - 使用 OrderBy 扩展时的默认比较器

c# - 使用自定义 TextWriter 时 OutputStream 不可用 mvc

c# - 如何在VS 2013的代码编辑器上隐藏引用标签?

vba - Excel 内的 Eval 评估

javascript - 当我只想调用函数时,eval() 的更安全替代方法是什么?

javascript - JS Arithmetic 计算使用eval 正在相乘