开发者

Looking for eval function in any .NET language

开发者 https://www.devze.com 2023-02-11 06:57 出处:网络
Do any .NET/CLR languages supp开发者_如何学Pythonort an eval function and also allow calling into standard .NET code (e.g. calling into C# code)?I know that neither F# nor C# support eval.Are there an

Do any .NET/CLR languages supp开发者_如何学Pythonort an eval function and also allow calling into standard .NET code (e.g. calling into C# code)? I know that neither F# nor C# support eval. Are there any other options?

I am ideally looking for a solution compatible with .NET 3.5 (so I think this rules out Clojure-CLR), but I'm interested in any/all options.


An Eval Function for C# using JScript.NET (JavaScript)


JScript.NET has an eval function, see this answer


Not sure if this helps, but as you said you're looking for any solution. What about 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);
    }
}

Example taken from http://viniciusquaiato.com/blog/eval-em-c-com-ironruby/ (pt-BR)


My eventual solution was to adopt IronPython. JScript.NET technically does work, but it's clumbsy to use with Visual Studio 2008 and JScript.NET seems to be getting deprecated by Microsoft. IronPython on the other hand has a fairly active community.

0

精彩评论

暂无评论...
验证码 换一张
取 消