2010-10-25 2 views
10

Può uno sottolineare come dove posso trovare alcuni tutorial su IronJS e come chiamare un metodo scritto in IronJS da C# 4,0Informazioni su IronJS

Grazie

C# 4.0, IronJS

+0

Sarei disposto a scommettere che IronJS è troppo nuovo per avere tutorial. – Gabe

risposta

4

Se si dispone di un Context, è possibile chiamare Context.CompileSource() e passare i suoi risultati a Context.InvokeCompiled(), o semplicemente chiamare Context.Execute() e passarlo il codice sorgente. Approssimativamente, questo:

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

Sir, 1 altra domanda .. L'ultimo giorno stavo cercando di ottenere la classe IronJS dalle DLL disponibili. Ma non è in grado di scoprirlo. Potresti per favore farmi sapere in quale assemblaggio si tratta? –

+0

IronJS è uno spazio dei nomi, non una classe. – Gabe

+0

Sì, è un errore ... Intendo in quale dll otterrò questo IronJS.Hosting.Context? –

1

Si potrebbe dare un'occhiata a Embedding IronJs. Ma sembra antiquato così come la risposta di @Gabe.

Attualmente dovrebbe essere chiamato in questo modo:

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

V'è ora un po 'di buona informazione da parte dell'autore sul wiki del progetto GitHub:

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

C'è un 'primi passi' post di blog qui:

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

E ho scritto diversi post sul blog su IronJS incluso uno che ha collegato stej. Il post stej link è in realtà attuale, ma copre solo alcuni aspetti fondamentali dell'incorporazione. IronJS ha subito una radicale riscrittura sin dai miei primi post, quindi ho inserito le notifiche su quei post che indirizzano agli aggiornamenti più recenti.

Questo post copre specificamente domanda del manifesto originale su come chiamare il codice JS da C#:

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

Ecco un breve riassunto:

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

Ho aggiornato il tag wiki per includere alcuni dei collegamenti e del contenuto del file readme. –

+0

Con l'ultimo IronJS questo snippet di codice è ammortizzato in quanto non esiste un 'IronJS.Box', esiste un 'IronJS.BoxedValue' ma non ha un metodo 'Func.Compile'. I documenti per IronJS sono frustranti. – CmdrTallen