5

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関数を呼び出す方法、助けてください... Googleで検索しても助けが得られませんでした。

ありがとう

4

1 に答える 1

6

スクリプトは何も返さないため、実行の結果はnullになります。

ただし、スクリプトを実行して関数を取得した後は、「グローバル」オブジェクトにアクセスできます。

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>();
于 2011-08-30T21:07:16.807 に答える