2011-02-16 4 views
4

.NET/CLR 언어는 eval 함수를 지원하며 표준 .NET 코드 (예 : C# 코드 호출)를 호출 할 수 있습니까? 나는 F #도 C#도 eval을 지원하지 않는다는 것을 안다. 다른 옵션이 있습니까?모든 .NET 언어에서 eval 함수 찾기

이상적으로 .NET 3.5와 호환되는 솔루션을 찾고 있습니다. (Clojure-CLR을 배제한 것으로 생각합니다.) 그러나 모든/모든 옵션에 관심이 있습니다.

답변

1

확실하지 않음이 도움이되지만 당신이 말한대로 당신은 어떤 솔루션을 찾고 있다면. IronRuby는 어떻습니까? http://viniciusquaiato.com/blog/eval-em-c-com-ironruby/ (PT-BR)에서 촬영

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); 
    } 
} 

0

내 최종 용액 IronPython을 채택 하였다 참조 갖는다. JScript.NET은 기술적으로 효과가 있지만 Visual Studio 2008에서 사용하기에는 단조롭고 JScript.NET은 Microsoft에서 더 이상 사용하지 않는 것으로 보입니다. 반면에 IronPython은 상당히 활동적인 커뮤니티를 가지고 있습니다.

관련 문제