2010-10-25 5 views
10

Puede alguno señalar que donde puedo conseguir algunos tutoriales sobre IronJS y cómo llamar a un método escrito en IronJS de C# 4.0información acerca IronJS

Gracias

C# 4.0, IronJS

+0

Estaría dispuesto a apostar que IronJS es demasiado nuevo para tener tutoriales. – Gabe

Respuesta

4

Si tiene un Context, puede llamar al Context.CompileSource() y pasar sus resultados al Context.InvokeCompiled(), o simplemente llamar al Context.Execute() y pasarle el código fuente. Más o menos, esto:

IronJS.Hosting.Context ijsCtx; 
ijsCtx = IronJS.Hosting.Context.Create(); 
ijsCtx.Execute("(function(){return 42;})()"); 
+0

Señor, 1 pregunta más ... El último día estaba tratando de obtener la clase IronJS de los dlls disponibles. Pero no puede descubrirlo. ¿Podrían por favor dejarme saber en qué asamblea se encuentra? –

+0

IronJS es un espacio de nombres, no una clase. – Gabe

+0

Sí, es un error tipográfico ... Quiero decir, ¿en qué dll obtendré este IronJS.Hosting.Context? –

1

Usted puede echar un vistazo a Embedding IronJs. Pero parece obsoleto, así como la respuesta de @Gabe.

Actualmente se debería llamar así:

var o = new IronJS.Hosting.Csharp.Context 
o.Execute('var a = 10; a'); 
9

En la actualidad existe una buena información del autor en el proyecto GitHub wiki:

https://github.com/fholm/IronJS/wiki

hay un 'primeros pasos' entrada de blog aquí:

http://blog.dotsmart.net/2011/04/20/first-steps-with-ironjs-0-2/

Y he escrito varias publicaciones en el blog sobre IronJS, incluida una que stej ha vinculado. El enlace post stej es actual, pero solo cubre algunos aspectos básicos de la incrustación. IronJS ha sufrido una reescritura radical desde mis primeros mensajes, así que he puesto avisos en esas publicaciones que dirigen a las actualizaciones más recientes.

Este puesto cubre específicamente la pregunta de su creador original sobre cómo llamar a código JS desde C#:

http://newcome.wordpress.com/2011/03/13/embedding-ironjs-part-ii/

Aquí es un breve resumen:

IronJS.Hosting.Context ctx = IronJS.Hosting.Context.Create(); 
ctx.Execute("hello = function() { return 'hello from IronJS' }"); 
IronJS.Box obj = ctx.GetGlobal("hello"); 
Func<IronJS.Function,IronJS.Object,IronJS.Box> fun = 
    obj.Func.Compiler.compileAs<Func<IronJS.Function,IronJS.Object,IronJS.Box>>(obj.Func); 

IronJS.Box res = fun.Invoke(obj.Func, obj.Func.Env.Globals); 
Console.WriteLine(res.String); 
+0

Actualicé la etiqueta wiki para incluir algunos de los enlaces y el contenido del archivo léame. –

+0

Con el último IronJS, este fragmento de código se deprecia ya que no hay un 'IronJS.Box', hay un 'IronJS.BoxedValue' pero no tiene un método 'Func.Compile'. Los documentos para IronJS son frustrantemente insuficientes. – CmdrTallen