MemberExpression: InvalidOperationExpression-Variable 'x', auf die vom Bereich '' verwiesen wird, ist jedoch nicht definiert

8

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

    
T. Webster 24.05.2011, 05:55
quelle

1 Antwort

14

Sie erstellen verschiedene Parameter, die mehrmals "x" genannt werden. Wenn Sie ein einzelnes ParameterExpression verwenden, sollte alles gut funktionieren.

%Vor%

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 ...

    
Jon Skeet 24.05.2011, 06:00
quelle

Tags und Links