J'ai des difficultés à faire fonctionner cette API dans .net 3.5 (fonctionne bien dans 4.0). Fondamentalement, j'ai le code suivantAPI Dynamic Expression (Dynamic.cs) Pas correctement l'analyse de l'expression dans .net 3.5
List<ParameterExpression> parameters = new List<ParameterExpression>();
parameters.Add(Expression.Parameter(typeof(double), "R0C6"));
parameters.Add(Expression.Parameter(typeof(double), "R0C7"));
parameters.Add(Expression.Parameter(typeof(double), "R0C8"));
parameters.Add(Expression.Parameter(typeof(double), "R0C9"));
parameters.Add(Expression.Parameter(typeof(double), "R0C10"));
parameters.Add(Expression.Parameter(typeof(double), "R0C11"));
parameters.Add(Expression.Parameter(typeof(double), "R0C12"));
LambdaExpression e = DynamicExpressionBuilder.ParseLambda(
parameters.ToArray(), typeof(double), "R0C6 + R0C7 + R0C8 + R0C9 + R0C10 + R0C11 + R0C12");
var result = e.Compile().DynamicInvoke(1, 1, 1, 1, 1, 1, 1);
Console.WriteLine(result);
Lors de l'exécution de ce code, j'obtiens ArgumentException. La raison étant .NET 3.5 n'a pas de délégué Func qui prend plus de 4 paramètres. Quelqu'un peut-il me suggérer de changer dans Dynamic.cs afin que je puisse obtenir du code capable de fonctionner en 3.5?
Pouvez-vous expliquer ce que fait DynamicExpressionBuilder avec les paramètres? Ma réponse ci-dessous suppose que vous avez un ensemble statique de paramètres, mais après l'avoir relu, je vois que dans la pratique, vous avez probablement affaire à un nombre inconnu de paramètres. –
DynamicExpressionBuilder est simplement la version renommée de DynamicExpression de classe dans le fichier Dynamic.cs. Je viens de changer de nom afin que je puisse différencier DynamicExpression de classe dans l'espace de noms system.linq.expression. – Bhavesh