Equivalent VBs -> C# : Eval and Execute
本文关键字:Eval and Execute VBs gt Equivalent | 更新日期: 2023-09-27 18:14:24
我尝试将一部分代码从VBScript转换为c#。我有这些行:
string replacementMatch = ....;
…
replacementMatch = Eval(replacementMatch);
或
Execute(replacementMatch);
Eval函数计算表达式并返回结果。在c#和VB.NET等静态类型语言中找不到等效的。有一些库提供了这样的功能,如escape .
您无法找到完全相同的功能,但您可以使用CodeDomProvider
从生成的代码编译程序集,并使用Reflection
从中调用方法。
您可以在c#中添加Microsoft Script Control
的引用并调用其Eval函数。请看这个答案
如何在c#运行时评估字符串格式的布尔表达式的结果?
您将找不到等效的。您可以使用c#编译器,但在应用程序中执行任意代码绝不是一个好主意。考虑您的需求,看看编写一个简单的解析器是否可行。查看System.Linq.Expressions
在VBScript文档中,你可以发现"Eval"answers"Execute"参数被评估为"作为VBScript表达式"。所以简而言之,没有c#的等价物。
一般来说,你应该回顾一下vb代码,并考虑用c#重写它,这样就不需要在运行时评估脚本了。
如果您确实需要在运行时创建语句并对其求值,您可以尝试第三方工具-如"http://www.codeproject.com/KB/dotnet/evaluator.aspx"(尽管我没有使用这个特定的工具-我可以看到很少有情况下,当这是真正需要的)。