任何.NET / CLR语言是否支持eval
函数,还允许调用标准.NET代码(例如调用C#代码)?我知道F#和C#都不支持eval
。还有其他选择吗?
我理想地寻找与.NET 3.5兼容的解决方案(所以我认为这排除了Clojure-CLR),但我对任何/所有选项感兴趣。
答案 0 :(得分:3)
答案 1 :(得分:1)
不确定这是否有帮助,但正如您所说,您正在寻找任何解决方案。 那么IronRuby呢?
public static class RubyEngineCreator
{
private static ScriptEngine ironRubyEngine = null;
private static ScriptEngine CreateEngine()
{
if (ironRubyEngine == null)
ironRubyEngine = Ruby.CreateEngine();
return ironRubyEngine;
}
public static dynamic GetRubyObject(string script)
{
return CreateEngine().CreateScriptSourceFromString(script).Execute();
}
}
[TestClass]
public class UnitTest
{
private T Eval<T>(string s)
{
return (T)RubyEngineCreator.GetRubyObject(s);
}
[TestMethod]
public void Should_Return4_4()
{
var result = Eval<int>("2 + 2");
Assert.AreEqual(4, result);
}
}
取自http://viniciusquaiato.com/blog/eval-em-c-com-ironruby/(pt-BR)
的例子答案 2 :(得分:1)
JScript.NET具有eval
功能,请参阅this answer
答案 3 :(得分:0)
我最终的解决方案是采用IronPython。 JScript.NET在技术上确实有效,但使用Visual Studio 2008并且JScript.NET似乎被Microsoft弃用了。另一方面,IronPython有一个相当活跃的社区。 p>