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();
lang/csharp/textes.1476784656.txt.gz · Dernière modification : 2016/10/18 11:57 de root