2011-08-30 16 views
5

Acabo de descargar el Iron JS y después de hacer unos 2/3 programas simples usando el método Execute, estoy buscando en el método ExecuteFile.Cómo invocar una función escrita en un archivo javascript desde C# usando IronJS

Tengo un archivo Test.js cuyo contenido es tan bajo

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

Quiero invocar el mismo desde C# usando el hierro JS. ¿Como lo puedo hacer? Mi código hasta ahora

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

pero variable loadfile es nulo (ruta es correcta) ..

cómo invocar la función JS, por favor ayuda ... También buscar en google dado ninguna ayuda.

Gracias

+0

He revisado mi respuesta para trabajar con el paquete NuGet. Mi respuesta anterior se basó en nuestra rama principal actual. Había olvidado que las cosas dinámicas aún no estaban en NuGet. –

+0

Su edición cambió por completo la pregunta, y también hizo que la pregunta no tenga valor. He retrocedido a la versión original. Si desea volver a su versión, es su elección, pero yo, por mi parte, votaré para cerrar la pregunta como "No es una pregunta real". –

+0

Sí, sucedió por error ... gracias por devolverlo. – learner123

Respuesta

6

El resultado de la ejecución va a ser nula, debido a la secuencia de comandos no devuelve nada.

Sin embargo, puede acceder al objeto "globales" después de que la secuencia de comandos se haya ejecutado para obtener la función.

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

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

EDIT: Esa versión particular trabajará con la actual rama principal, y en un comunicado de arriba viene, pero no es exactamente lo que han de trabajar con el paquete NuGet. La versión un poco más detallada que funciona con IronJS versión 0.2.0.1 es:

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

Señor, 1 pregunta (no sé si es relevante preguntar), ¿cuándo se lanzará oficialmente Iron JS? – learner123

+0

Fredrik Holmstrom sería la persona a quien preguntar, pero puede considerar los lanzamientos en NuGet como "compatibles", ya que tratamos de ser muy activos a la hora de solucionar problemas y publicar actualizaciones. –

Cuestiones relacionadas