Ich entwickle dynamische Business Rule-Engine mit Expression Tree. Daher bin ich nicht sicher über die Anzahl der Parameter während der Kompilierzeit. Ich muss dynamische Eingabeparameter erstellen.Expression.Lambda mit dynamischen Eingabeparametern
Für diese Anforderung verwende ich die Expression.Lambda wie unten, aber seinen Wurf Fehler wie:
Falsche Anzahl von Parametern für die Lambda-Erklärung geliefert
ich falsch sein kann, in die Syntax. Ich habe auf Microsoft-Website verwiesen, sie erstellen Func mit einzelnen Parametern, nicht Array von Parametern.
Auch wenn es rund 16 Parameter, sie sind einzeln jeden Parameter separat wie Func< T1,T2,T3,T4,T5...T16 >
https://msdn.microsoft.com/en-us/library/dd402862(v=vs.110).aspx
erklärt Gibt es eine Abhilfe statt einzeln deklarieren können wir als Array übergeben?
var lambdaExpression = Expression.Lambda< Func< T[], bool>>(ruleExpression, pe).Compile();
In der obigen Syntax PE sind die ParameterExpression[]
Array mehr Parameter aufweisen.
In der obigen Syntax anstelle von T[]
Array, wenn ich einzelne T-Elemente verwenden, seine adaequat wie
var lambdaExpression = Expression.Lambda< Func< T,T, bool>>(ruleExpression, pe).Compile();
aber das Problem ist die Anzahl der T wird nicht während der Kompilierung bekannt sein.
Bitte korrigieren Sie mich Wenn ich hier etwas falsch mache.
Was ist nur Expression.Lambda (...)? –
Ausdruck.Lambda ist die API-Funktion, die ich benutze, um Delegat aus Ausdruckstress zu erzeugen, das in vorherigen Operationen gebildet wurde oder als Parameter an andere Funktionen übergeben wurde, die ich hier nicht zeige. Ich habe nur die Ausdrucksbaumvariable ruleExpression verwendet, wo der Ausdrucksbaum gespeichert ist –
Ich versuchte einfachen Expression.Lamda sowie –