【问题标题】:Evaluating dynamic string formulas in .NET?在 .NET 中评估动态字​​符串公式?
【发布时间】:2010-12-05 16:39:38
【问题描述】:

我正在做一个项目,我需要在 VB.NET 中评估一些公式。我一直在使用MS Script Control 来评估一些简单的逻辑/数学公式。

但是,我现在面临着处理将程序中的变量设置为特定值的字符串表达式。因此,例如,假设我有以下内容:

Dim netPrice As Decimal
Dim expressionFormula As String = "netPrice = 0"

我需要能够评估“expressionFormula”并将 netPrice 变量设置为 0。我一直在尝试 MS Script Control 中 .AddObject 方法的不同组合,但还没有任何效果。

我应该提到这个例子只是为了说明目的,真实的场景涉及来自一个类型化 DataSet 的几个 DataTable 对象。最后,我的DataTable中的某些字段可能需要根据这些动态表达式设置为特定的常量值。

感谢您的帮助!

【问题讨论】:

  • 你为什么用 C# 标记这个问题?我没有看到任何提及 C#...
  • @Mark:你是对的。起初我有点认为它会独立于 VB/C#,但现在我不太确定。我将删除 C# 标记。

标签: .net vb.net formula scriptcontrol


【解决方案1】:

对于这种功能,您需要编写自己的解析器和评估器。

看看 Linq Expression 类 - 它可能会有所帮助。

或者,根据您的方法,您可以使用 CSharpCodeProvider 编写和编译动态类,以将您的表达式编译为 C# 类/程序集。

【讨论】:

  • 感谢您的回答。我最终对公式的编写方式采取了更严格的方法(允许我解析它们),并利用 DataSet/DataTable 语法在设置值时动态“插入”字段和表名称。
【解决方案2】:

如果您必须处理复杂的表达式,也许这个库会有所帮助:http://flee.codeplex.com/?

【讨论】:

  • 感谢您的链接,它不能满足我的需要,但它看起来可能是我目前使用的过时 MS Script Control 的一个很好的替代品。
【解决方案3】:

Dynamic Linq 就是你要找的东西

【讨论】:

  • 我使用过 D-Linq,但我看不出它如何帮助我完成我在示例中说明的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 2021-12-12
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多