等效VBs - > C#:Eval和Execute

时间:2011-11-14 14:09:05

标签: c# vbscript

我尝试将部分代码从VBScript转换为C#。 我有以下几行:

string replacementMatch = ....;

...

replacementMatch = Eval(replacementMatch);

OR

Execute(replacementMatch);

我找不到C#中的等价物。

5 个答案:

答案 0 :(得分:4)

Eval函数计算表达式并返回结果。您将找不到静态类型语言(如C#和VB.NET)中的等效语言。有些库提供了诸如flee之类的功能。

答案 1 :(得分:0)

您找不到完全相同的功能,但您可以使用CodeDomProvider从生成的代码编译程序集,并使用Reflection从中调用方法。

答案 2 :(得分:0)

您可以添加对Microsoft Script Control的引用,并在c#中调用其Eval函数。 看到这个答案。

How can I evaluate the result of a boolean expression in string format on runtime in C#?

答案 3 :(得分:0)

你找不到同等的东西。您可以使用C#编译器,但在您的应用程序中执行任意代码绝不是一个好主意。考虑您的要求,看看编写一个简单的解析器是否可行。在这种情况下,请查看System.Linq.Expressions。

答案 4 :(得分:0)

在文档VBScript中,您可以发现“Eval”和“Execute”参数被评估为“作为VBScript表达式”。所以简而言之,没有C#等价物。

通常,您应该查看vb代码并考虑在C#中重写它,以便不需要在运行时评估脚本。

如果你真的需要在运行时创建语句并对它们进行评估,你可以试试第三方工具 - 比如“http://www.codeproject.com/KB/dotnet/evaluator.aspx”(尽管我没有用过)这个特殊的工具 - 在真正需要时我可以看到很少的情况。)