如何使用IronJS从C#调用javascript文件中编写的函数

时间:2011-08-30 07:33:05

标签: c# ironjs

我只是下载Iron JS ,在使用Execute方法完成一些2/3简单程序后,我正在查看ExecuteFile方法。

我有一个Test.js文件,其内容如下

function Add(a,b)
{
    var result = a+b;
    return result;
}

我想使用Iron JS从C#中调用它。我怎么能这样做?我的代码到目前为止

var o = new IronJS.Hosting.CSharp.Context();
dynamic loadFile = o.ExecuteFile(@"d:\test.js");
var result = loadFile.Add(10, 20);

但是loadfile变量为null(路径正确)..

如何调用JS功能,请帮忙...在谷歌搜索也没有帮助。

由于

1 个答案:

答案 0 :(得分:6)

执行的结果将为null,因为您的脚本不会返回任何内容。

但是,您可以在脚本运行后访问“globals”对象以获取该函数。

var o = new IronJS.Hosting.CSharp.Context();
o.ExecuteFile(@"d:\test.js");
dynamic globals = o.Globals;

var result = globals.Add(10, 20);

编辑:该特定版本将与当前的主分支一起使用,并且在即将发布的版本中,但不完全是我们使用NuGet包。与IronJS版本0.2.0.1一起使用的稍微冗长的版本是:

var o = new IronJS.Hosting.CSharp.Context();
o.ExecuteFile(@"d:\test.js");
var add = o.Globals.GetT<FunctionObject>("Add");

var result = add.Call(o.Globals, 10D, 20D).Unbox<double>();