csharp / expert
Snippet
Dynamische Abfrage-Kompilierung via Expression Trees
Expression Trees stellen Code in einer baumartigen Datenstruktur dar, in der jeder Knoten ein Ausdruck ist. Experten nutzen dies für Metaprogrammierung, wie den Aufbau dynamischer LINQ-Provider oder das Kompilieren hochoptimierter Logik zur Laufzeit, die sonst langsame Reflection erfordern würde.
snippet.csharp
1
2
3
4
5
6
ParameterExpression param = Expression.Parameter(typeof(int), "x");BinaryExpression body = Expression.GreaterThan(param, Expression.Constant(10));Expression<Func<int, bool>> lambda = Expression.Lambda<Func<int, bool>>(body, param);Func<int, bool> compiled = lambda.Compile();bool result = compiled(15);
Erklärung
1
Expression.Lambda<Func<int, bool>>(body, param);
Definiert die Signatur und Logik der anonymen Funktion.
2
lambda.Compile();
Löst den JIT-Compiler aus, um den Expression Tree in ausführbaren IL-Code umzuwandeln.