【发布时间】:2010-06-03 11:48:02
【问题描述】:
.net 中有哪些方法可以从字符串运行代码?
Console.WriteLine(Compile("1 + 2 * 3")); // results is 7.
我们还有哪些其他选择?
- C# - 在运行时编译代码?
- IronRuby / IronPython?
- F#?
【问题讨论】:
标签: c# dynamic .net-4.0 eval ironruby
.net 中有哪些方法可以从字符串运行代码?
Console.WriteLine(Compile("1 + 2 * 3")); // results is 7.
我们还有哪些其他选择?
【问题讨论】:
标签: c# dynamic .net-4.0 eval ironruby
因此,IronRuby 和 IronPython 等动态语言让您可以轻松地做您想做的事。创建脚本引擎并执行字符串。就这么简单。
C#,使用 Code DOM 是可能的……但它每次都将代码编译成 DLL。这是一种代价高昂的行为,如果您不使用 App Domains 做一些棘手的事情,可能会导致您的应用程序的内存大小随着时间的推移而增长。可以做到,但我更喜欢使用 IronRuby 或 IronPython,而不是这种方法。这要简单得多。
最后,在 C# 5.0 中,我们希望将编译器视为托管服务。这意味着您将来可以运行 eval("//c#code") ......但它尚不可用。
希望对你有帮助!
【讨论】:
Eval 函数非常容易。
结帐 NCalc。它是一个可以包含在应用程序中的 dll,它支持多种数学和逻辑运算。 http://ncalc.codeplex.com/
【讨论】: