In dem einfachen Snippet unten:
static void Main(string[] args)
{
Expression> equal = s => s == "test";
LambdaExpression lambda = Expression.Lambda(equal.Body, Expression.Parameter(typeof(string), "s"));
lambda.Compile();
}
Die Compile-Methode schlägt mit einer InvalidOperationException
fehl
"Variable 's' des Typs 'System.String', die aus dem Bereich referenziert wird, ist nicht definiert".
Obwohl ich andere ähnliche Fragen gefunden habe, konnte ich die Antwort nicht verstehen.
Der DebugView der LambdaExpression enthält dies:
.Lambda #Lambda1(System.String $s) {
$s == "test"
}
Also, wo ich bei anderen Beispielen dieser Frage gesehen habe, dass der Parameter und die Verwendung nicht übereinstimmen, scheint dies hier kein Problem zu sein. Was mache ich falsch?