2009-08-11 72 views
1

可能重複:
C# eval equivalent?實施JS評估和演示在C#

How can I evaluate C# code dynamically?

我們如何能實現JS的eval()在C# 如果可能的話提供了一個例子重複.. 謝謝

+0

你可以包括項目MSScript.dll,如果是的話,我會提供一個答案 – Dewfy 2009-08-11 12:32:09

+0

a =「<>/100」; a.replace(「<>」,「20」); string b = eval(a); 我應該得到.2作爲結果 我怎麼能在C# 沒有使用JScript有可能嗎? 取代eval(a); – Preetham 2009-08-11 13:13:03

+0

[C#eval等效?](http://stackoverflow.com/questions/4629/c-eval-equivalent) – rahul 2009-08-11 12:31:53

回答

4

你實際上可以使用JScript從C#...功能

創建一個文件JsMath.js,用下面的JScript代碼:

class JsMath 
{ 
    static function Eval(expression : String) : double 
    { 
     return eval(expression); 
    }; 
} 

它編譯成一個DLL:

jsc /t:library JsMath.js 

增加提及JsMath。 DLL到你的項目。現在,您可以使用JsMath類代碼:

double result = JsMath.Eval(expression); 
+0

這是非常實際的解決方案用於任何.NET語言的快速評估。您只需要包含對Microsoft.JScript.dll的引用。 – gavi 2013-07-18 17:35:30

0

如果你可以使用C#3.0/.NET 3.5,有一個在MSDN代碼庫中C# Samples for Visual Studio 2008一個全面運作的表達式解析器的樣本,在DynamicQuery。這使得不僅可以評估單個表達式,甚至可以從它們創建函數(委託)或LINQ表達式。 (LinqDataSource控件在內部使用此示例的稍微修改版本。)