Ich verwende System.Linq.Expressions
Ich habe versucht, eine einfache LambdaExpression zu erstellen, die MemberExpression . Wenn ich die MemberExpression explizit mit der System.Linq.Expressions-API (z. B. ) erstelle MakeMemberAccess ), ich bekomme den Fehler "InvalidOperationExpression Variable 'x' referenziert von Scope '', aber es ist nicht definiert" wenn ich Compile () auf LambdaExpression aufruft.
Dies ist beispielsweise mein Code
%Vor%expression2 und expression3 lösen eine Exception aus, wenn die Compile () -Methode aufgerufen wird, aber expression1 nicht; ausdruck1 funktioniert. Warum ist das? Wie erstelle ich eine MemberExpression wie in den Ausdrücken 2, 3 und lasse sie funktionieren (keine Exception auslösen), wenn ich Compile () aufrufe?
Danke
Sie erstellen verschiedene Parameter, die mehrmals "x" genannt werden. Wenn Sie ein einzelnes ParameterExpression
verwenden, sollte alles gut funktionieren.
Grundsätzlich werden Parameterausdrücke nicht mit dem Namen verglichen - Sie müssen den gleichen überall verwenden. Es ist ein bisschen Schmerz, aber da gehen wir ...
Tags und Links c# linq expression-trees