pauldoo
pauldoo

Reputation: 18635

Looking for eval function in any .NET language

Do any .NET/CLR languages support 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.

Upvotes: 4

Views: 541

Answers (4)

pauldoo
pauldoo

Reputation: 18635

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.

Upvotes: 0

Thomas Levesque
Thomas Levesque

Reputation: 292555

JScript.NET has an eval function, see this answer

Upvotes: 1

goenning
goenning

Reputation: 6654

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)

Upvotes: 1

Related Questions