2017-06-08 87 views
0

我正在檢查可能發生變化的條件,因此希望在字符串中構建它們,然後將該字符串作爲C#運行。以C#執行字符串#

//string conditionToCheck = user.Userdetail.Age > 18 
string conditionToCheck = "user." + condition.Table + "." + condition.Column + " " + condition.Operator + " " + condition.Value; 
if(conditionToCheck) 
{ 
    ConditionsMet = true; 
} 

有沒有辦法將conditionToCheck轉換成C#?


背景

我允許用戶通過選擇一個表來創造條件,它是柱,然後分配和> < ==和一個值的運算符。

由於用戶可以選擇DB中任何表的任何列,我需要代碼來檢查處理任何事情的條件。

+1

你也許可以得到通過反射操作數的值,但這確實需要一種不同的方法。 **這是[XY問題]的反彈(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你究竟遇到什麼問題?試圖用這個解決問題?爲什麼?** – cubrr

+0

C#不適合這種編程風格。去LISP。 – i486

+0

'user'是什麼類型?可以有多少個不同的表和列? – cubrr

回答

0

是的,最好的解決方案可能是使用CodeDOM來動態編譯C#代碼。之後,您可以使用反射動態加載並執行編譯後的程序集,並從評估中獲取結果。但我不確定這是否是針對您問題的最佳解決方案。

你可以找到一個例子here