2009-08-11 71 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控件在内部使用此示例的稍微修改版本。)