.net 4 - Codice fuga da stringa - in C # / F # / IronRuby / IronPython
Domanda
che modo devo in .NET per eseguire codice da stringa?
Console.WriteLine(Compile("1 + 2 * 3")); // results is 7.
Quali altre opzioni abbiamo?
- C # -? Compilare il codice in fase di esecuzione
- IronRuby / IronPython?
- F #?
Soluzione
Quindi, i linguaggi dinamici come IronRuby e IronPython lo rendono molto facile da fare quello che vuoi. Creare un motore di script ed eseguire la stringa. Facile come questo.
C #, è possibile, utilizzando il DOM codice ... ma si compila il codice ogni volta che in una DLL. Questo è un comportamento costoso e può causare la vostra applicazione a crescere in termini di dimensioni della memoria nel corso del tempo, se non fare alcune cose difficili con App Domini. Si può fare, ma io in realtà preferisco utilizzare IronRuby o IronPython su questo approccio. E 'molto più semplice.
Infine, in C # 5.0, ci aspettiamo di vedere il compilatore come servizio gestito. Questo significa che sarà in grado di eseguire eval ( "// c # codice"), in futuro ... ma non è ancora disponibile.
Speranza che aiuta!
Altri suggerimenti
Checkout NCalc. Si tratta di una dll è possibile includere nella propria applicazione e supporta più operazioni logiche e matematiche. http://ncalc.codeplex.com/