2011-08-30 9 views
5

Ho appena scaricato il Iron JS e dopo aver fatto alcuni semplici programmi 2/3 usando il metodo Execute, sto esaminando il metodo ExecuteFile.Come richiamare una funzione scritta in un file javascript da C# usando IronJS

Ho un file test.js il cui contenuto è come sotto

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

voglio richiamare lo stesso da C# utilizzando ferro JS. Come posso farlo? Il mio codice finora

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

Ma variabile loadfile è nullo (percorso sia corretto) ..

come richiamare la funzione JS, per favore aiutatemi ... Anche alla ricerca in google dato nessun aiuto.

Grazie

+0

Ho rivisto la mia risposta per lavorare con il pacchetto NuGet. La mia precedente risposta era basata sul nostro attuale master branch. Avevo dimenticato che le cose dinamiche non erano ancora in NuGet. –

+0

La modifica ha completamente modificato la domanda e ha anche reso inutile la domanda. Sono tornato alla versione originale. Se vuoi tornare alla tua versione, è una tua scelta, ma io, per esempio, voterò per chiudere la domanda come "Non una vera domanda". –

+0

Sì, è successo per errore .. grazie per averlo riavviato. – learner123

risposta

6

Il risultato dell'esecuzione sta per essere nullo, perché lo script non restituisce nulla.

Tuttavia, è possibile accedere all'oggetto "globals" dopo che lo script è stato eseguito per eseguire la funzione.

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

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

EDIT: Quel particolare versione funziona con il ramo master attuale, e in una versione up-coming, ma non è proprio quello che hanno a lavorare con il pacchetto NuGet. La versione leggermente più dettagliata che funziona con IronJS versione 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

Signore, 1 domanda (non so se è importante chiedere), quando Iron JS sarà ufficialmente rilasciato? – learner123

+0

Fredrik Holmstrom sarebbe la persona da chiedere, ma puoi considerare le versioni di NuGet come "supportate", in quanto cerchiamo di essere molto attivi nel risolvere problemi e pubblicare aggiornamenti. –

Problemi correlati