Outils pour utilisateurs

Outils du site


lang:csharp:textes

Ceci est une ancienne révision du document !


Évaluation d'une expression (opération ou condition) sous forme de texte

La première (mauvaise) solution est d'utiliser ScriptControl. Ce composant est dépendant de Windows et n'est pas compatible 64 bits. La plateforme cible doit être x86 et non Any CPU. En plus, il ne s'agit pas d'un composant natif c# et donc la modification de code à la volée (en debug) d'une fonction contenant ce contrôle est impossible.

MSScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "VBScript";
string expression = "1+1";
object result = null;
try
{
    result = sc.Eval(expression);
}
catch (COMException)
{
    throw new Exception("Impossible d'évaluer l'expression VB : " + expression);
}
string resultat = result.ToString();

La bonne solution est d'utiliser DataTable.

DataTable dt = new DataTable();
object result = null;
try
{
    result = dt.Compute(condition, "");
}
catch (SyntaxErrorException)
{
    throw new Exception("Impossible d'évaluer l'expression VB : " + condition);
}
string resultat = result.ToString();

Source, Archive

lang/csharp/textes.1476784656.txt.gz · Dernière modification : 2016/10/18 11:57 de root