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

发布于 2024-12-02 04:54:08 字数 566 浏览 1 评论 0原文

我只是下载了 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 变量为空(路径正确)..

如何调用 JS 函数,请帮助...也在 google 中搜索没有任何帮助。

谢谢

I just download the Iron JS and after doing some 2/3 simple programs using the Execute method, I am looking into the ExecuteFile method.

I have a Test.js file whose content is as under

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

I want to invoke the same from C# using Iron JS. How can I do so? My code so far

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

But loadfile variable is null (path is correct)..

How to invoke JS function ,please help... Also searching in google yielded no help.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

混浊又暗下来 2024-12-09 04:54:08

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

但是,您可以在脚本运行后访问“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>();

The result of the execution is going to be null, because your script does not return anything.

However, you can access the "globals" object after the script has run to grab the function.

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

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

EDIT: That particular version will work with the current master branch, and in an up-coming release, but is not quite what we have working with the NuGet package. The slightly more verbose version that works with IronJS version 0.2.0.1 is:

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>();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文