我有一个像"(((2+5)*1000)/((30-20)*7))"
这样的表达式如何使用C#中的IronJS来评估表达式。
预期的结果是100。
我尝试了How can I evaluate a C# expression dynamically?中描述的前两个评级答案,并且它以这些方式工作。精细。
我还研究了评论中提到的 @Rudolf_Abel 和 @Jeno Laszlo 提出的解决方案,即IronJS是更好的选择。
现在我正在尝试使用IronJS。有可能。怎么样?我已经阅读了一些关于IronJs的文章(例如here就是一篇文章),但是不能满足要求。
N.B.~这是为了我自己的兴趣,我正在进行这个实验。
答案 0 :(得分:1)
以下是来自IronJS来源的a sample,此处是another one。
所以,你的代码将是这样的:
private static void Run()
{
var ctx = new IronJS.Hosting.CSharp.Context();
dynamic a = ctx.Execute("var a = (((2+5)*1000)/((30-20)*7)); a;");
Console.WriteLine(a);
}
P.S。至于我,我更喜欢使用C#脚本API。稳定的版本将与VS2015 update1一起发布(即将推出),夜间版本处于良好状态,我没有遇到麻烦。
您需要开始编码:small intro和nuget package。祝你好运!:)
答案 1 :(得分:1)
我不知道这会有所帮助,但请尝试一下。
IronJS.Hosting.Context jsContext;
jsContext = IronJS.Hosting.Context.Create();
jsContext.Execute("(function(){return eval('(((2+5)*1000)/((30-20)*7))');})()");