【发布时间】:2010-04-15 02:00:04
【问题描述】:
我正在尝试用 C# 语言解析公式,例如
"5*3 + 2"
"(3*4 - 2)/5"
是否可以用 C# 或 VBScript、JavaScript 等脚本(将在 c# 程序中调用)。
【问题讨论】:
我正在尝试用 C# 语言解析公式,例如
"5*3 + 2"
"(3*4 - 2)/5"
是否可以用 C# 或 VBScript、JavaScript 等脚本(将在 c# 程序中调用)。
【问题讨论】:
我在使用 Flee 方面拥有丰富的经验,这是一个 C# 库,用于评估您所描述的表达式。您可以将表达式计算为强类型语句,因此如果您想要一个整数,例如,"(1 + 2) * 5" 可以,但"hello world" 不行。
您甚至可以挂钩特定的变量或函数。 Flee examples page 是一个很好的起点。
【讨论】:
我以前在 C# 中使用过一个技巧,那就是使用 JScript.NET 的 eval 函数。您可以在我对this question 的回答中找到完整的代码。它不依赖于像 VBScript 或 JavaScript 这样的脚本语言,它是纯 .NET,我使用的实现从 C# 代码动态生成 JScript.NET 程序集,因此无需在您的解决方案中混合语言。
【讨论】:
我已经成功地使用了来自 Microsoft 的 Dynamic Linq 示例来动态制定使用 System.Linq.Expressions namespace 下的类型的表达式。这对我来说效果很好,让我可以使用更自然的 C# 语法来代替 ActiveReports 默认表达式。
【讨论】: