Credo sia noto che C# non ha la funzione Eval, è possibile però utilizzare una libreria di JScript che è l'implementazione di MIcrosoft di javascript Jscript.NET.
Tramite questa è possibile dotare tutti i linguaggi .NET di funzioni gestite dal linguaggio di scripting e difficilmente implementabili direttamente.
Fornire una stringa e ottenere un risultato è uno dei cimenti (inutili) che di solito capitano nella vita di un programmatore, io stesso ho scritto almeno due "valutatori" (nessuno su .net però), uno addirittura che "funzionava" durante l'editazione di una stringa sconto.
Su .NET l'implementazione è del tutto semplice, anzi banale.
Si inizia scrivendo una "classe" di interfaccia con la propria applicazione in JScript.NET:
Evaluator.js
class Evaluator
{
static function Eval(MathExpression : String) : double
{
return eval(MathExpression);
};
}
Si compila come libreria (si, bisogna andare al prompt dei comandi, suvvia non c'è niente di preoccupante a vedere la shell di Windows), ovviamente è necessario utilizzare quel comando che fa paura: "prompt dei comandi di visual studio" che ha il grosso vantaggio di impostare automaticamente path e variabili corrette.
Ci posizioniamo quindi sulla cartella dove abbiamo salvato il nostro Evaluator.js, diamo il comando: jsc /t:library evaluator.js
E' generata una nuova libreria (.dll).
Poi andiamo nel nostro programma / progetto, aggiungiamo il riferimento alla libreria testè creata e a Microsoft.JScript.
Inseriamo il nostro codice, l'intellisense fa il resto.
Più facile a farsi che a dirsi :D
Nessun commento:
Posta un commento