我有一个应用程序,用户可以为每个对象指定他自己的测量点。然后,这些测量值将用于将对象分类为 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/