Gli alberi delle espressioni sono una bella caratteristica, ma quali sono i suoi usi pratici? Possono essere usati per una sorta di generazione di codice o metaprogrammazione o alcuni di questi?
Come nota Jon, li uso per fornire operatori generici con .NET 3.5. Li uso anche (sempre in MiscUtil) per fornire un accesso rapido ai costruttori non predefiniti (non è possibile utilizzare Delegate.CreateDelegate
con i costruttori, ma Expression
funziona correttamente).
Altri usi degli alberi di espressione creati manualmente:
Ma in realtà, Expression è un modo molto versatile di scrivere qualsiasi codice dinamico. Molto più semplice di Reflection.Emit
, e per i miei soldi, più semplice da capire rispetto a CodeDOM. E in .NET 4.0, hai ancora più opzioni disponibili. Vi mostro i fondamenti della scrittura del codice tramite Expression
sul mio blog .
Marc Gravell li ha usati con grande efficacia in MiscUtil per implementare operatori generici .