2011-08-30 13 views
5

私はIron JSをダウンロードし、Executeメソッドを使って2/3の単純なプログラムを実行した後、ExecuteFileメソッドを調べています。IronJSを使用してC#からjavascriptファイルで書かれた関数を呼び出す方法

私はコンテンツ

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

下の通りであるTest.jsファイルを持っている私はアイアンJSを使ってC#から同じことを呼び出したいです。どうすればいいですか?私のコード今のところ

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

しかし、ロードファイルの変数は(パスが正しい)ヌル..です

JS関数を呼び出すためにどのように、グーグルでの検索も...助けてくださいは何の助けを得られませんでした。

おかげ

+0

です。NuGetパッケージで動作するように答えを修正しました。私の以前の回答は、現在のmasterブランチに基づいていました。ダイナミックなものはまだNuGetにはなかったことを忘れてしまった。 –

+0

あなたの編集は質問を完全に変更しましたが、問題は無益でした。私は元のバージョンにロールバックしました。あなたがあなたのバージョンに戻って欲しいのなら、それはあなたの選択ですが、私は1つは、「実際の質問ではない」という質問を閉じるため投票します。 –

+0

はい、それは間違って起こった..それを転がしてくれてありがとう。 – learner123

答えて

6

実行結果は、スクリプトが何も返さないため、ヌルになるだろう。

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

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

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

EDIT:特定のバージョンは、現在のmasterブランチと、アップ今後のリリースで動作しますが、我々は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>(); 
+0

Sir、1問(質問するのが適切かどうかわかりません)、Iron JSはいつ公式にリリースされるのですか? – learner123

+0

Fredrik Holmstromが尋ねる人になりますが、NuGetのリリースを "サポートされている"とみなすことができます。問題の修正やアップデートの公開に非常に積極的に取り組んでいます。 –

関連する問題