.net 4 - 在C#/ F#/ IronRuby / IronPython中运行来自字符串的代码

时间:2010-06-03 11:48:03

标签: c# dynamic .net-4.0 eval ironruby

.net中有哪些方法可以从字符串中运行代码?

Console.WriteLine(Compile("1 + 2 * 3"));    // results is 7.

我们还有其他选择吗?

  • C# - 在运行时编译代码?
  • IronRuby / IronPython?
  • F#?

2 个答案:

答案 0 :(得分:2)

因此,像IronRuby和IronPython这样的动态语言可以很容易地做你想要的。创建脚本引擎并执行字符串。很简单。

C#,有可能,使用Code DOM ...但它每次都会将代码编译成DLL。这是一种代价高昂的行为,如果您不使用App Domains做一些棘手的事情,可能会导致您的应用程序随着时间的推移而增加内存大小。它可以完成,但我更喜欢使用IronRuby或IronPython这种方法。它简单得多。

最后,在C#5.0中,我们期望将编译器视为托管服务。这意味着您将来可以运行eval(“// c#code”)...但它尚不可用。

希望它有所帮助!

答案 1 :(得分:0)

Checkout NCalc。它是您可以包含在应用程序中的DLL,它支持多种数学和逻辑运算。 http://ncalc.codeplex.com/