Je suis actuellement bloqué pour résoudre le problème de la construction d'un arbre d'expression qui valide plusieurs arguments d'un tableau.
Mais je ne peux pas utiliser Expression.Loop pour parcourir tous les éléments du tableau d'entrée. Parce que je ne sais pas comment convertir la variable count en int.
J'ai essayé d'utiliser ArrayAccess mais c'est plutôt compliqué.
Un grand merci.
Voici mon code:
Accès à l'index de tableau dans la boucle d'expression .net
//array stores temp input. inputCount is a dynamic value that got from the argument
object[] inParams = new object[inputCount];
var breakLabel = Expression.Label("LoopBreak");
//input of parameters to pass in the expression
ParameterExpression[] param = new ParameterExpression[inputCount];
for (int i = 0; i < inputCount; i++)
{
param[i] = Expression.Parameter(inParams[i].GetType(), "randomname");
//count variable for indexer
ParameterExpression count = Expression.Parameter(typeof(int), "count");
}
BlockExpression block2 = Expression.Block(
new[] { count },
Expression.Assign(count, Expression.Constant(0)),
Expression.Loop(
Expression.IfThenElse(
Expression.LessThan(count, Expression.Constant(param.Count())),
Expression.Block(
//Assign param[count] element from inParams[count] element
Expression.Assign(param[count], Expression.Constant(inParams[count])),
Expression.PostIncrementAssign(count)
),
Expression.Break(breakLabel)
),
breakLabel
));
Pourriez-vous mettre en forme votre code? C'est vraiment difficile à lire – Domysee
Malheureusement le code que vous avez fourni contient plusieurs références qui ne sont pas définies par ex. ltBool, contrôles, breakLabel entre autres. Voir les notes sur la fourniture d'un exemple minimal, complet et vérifiable. http://stackoverflow.com/help/mcve –
Hm Je peux voir que le code est formaté. J'ai également édité pour enlever les mots inutiles. –