2010-12-05 39 views
2

我正在開發一個項目,我需要在VB.NET中評估一些公式。我一直在使用MS Script Control來評估一些簡單的邏輯/數學公式。在.NET中評估動態字​​符串公式?

但是,我現在正面臨處理字符串表達式,它將我的程序中的變量設置爲某些值。因此,舉例來說,假設我有以下幾點:

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

我需要能夠評估「expressionFormula」和netPrice變量設置爲0。我一直在努力的.AddObject的不同組合方法在MS腳本控制,但沒有任何工作。

我應該提到這個例子只是爲了說明的目的,真正的場景涉及來自類型化數據集的多個DataTable對象。最後,根據這些動態表達式,可能需要將DataTable中的某些字段設置爲特定的常量值。

感謝您的幫助!

+0

爲什麼你在C#中標記了這個問題?我沒有看到任何C#的提及... – 2010-12-05 16:42:09

+0

@Mark:你說得對。我有點認爲它最初是VB/C#獨立,但現在我不太確定。我將刪除C#標記。 – Overhed 2010-12-05 18:35:50

回答

3

對於這種功能,您需要編寫自己的解析器和評估器。

看看Linq Expression課程 - 它可能會有所幫助。

或者,根據您的方法,您可以使用CSharpCodeProvider編寫和編譯動態類,以將表達式編譯爲C#類/程序集。

+0

感謝您的回答。我最終採取了一種更嚴格的方法來編寫公式(允許我解析它們),並利用DataSet/DataTable語法在設置值時動態地「插入」字段和表名稱。 – Overhed 2010-12-08 21:09:35

2

如果您必須處理複雜的表達式,那麼這個庫可能會有所幫助:http://flee.codeplex.com/

+0

感謝您的鏈接,它不會做我所需要的,但它看起來像它可能是我正在使用的過時的MS腳本控制的一個很好的替代品。 – Overhed 2010-12-08 21:10:08