Che cosa può fare il massimo di alberi di espressione LINQ?
-
07-07-2019 - |
Domanda
Qual è il massimo che può fare l'albero di espressione LINQ?
Può definire una classe? Che ne dici di un metodo, con tutti i nomi dichiarati, modificatori, tipo di parametro e tipo restituito?
Il programma deve sempre definire l'albero stesso? È possibile generare l'albero da un determinato file C #?
Dove posso trovare risorse per imparare a scrivere di base su Expression Tree e Expression Tree Visitor? (articoli e video saranno fantastici)
Grazie per coloro che sono in grado di aiutare ...
Soluzione
In C # 3, gli alberi delle espressioni possono rappresentare espressioni . Da qui il nome. E sono ulteriormente limitati a un sottoinsieme di espressioni C #: nessuna espressione di assegnazione, nessuna espressione che coinvolge tipi di puntatore e così via.
Nelle librerie che verranno fornite con C # 4, abbiamo esteso l'albero delle espressioni libreria per supportare anche gli alberi delle istruzioni. Tuttavia, C # 4 NON tradurrà automaticamente un'istruzione-lambda in un "albero di istruzioni" "
Questa è una caratteristica ovvia e utile che semplicemente non abbiamo avuto il tempo di raggiungere per C # 4. Lo considereremo per ipotesi future versioni. Se hai uno scenario utente davvero eccezionale per gli alberi delle istruzioni, mi piacerebbe ascoltarlo.
L'ovvia ulteriore estensione a tutto ciò che è l'albero delle dichiarazioni, che rappresenterebbe le dichiarazioni di classe, le dichiarazioni di struttura e così via. Avere totale omoiconicità tra il linguaggio C # e la libreria dell'albero delle espressioni sarebbe fantastico. Consentirebbe tutti i tipi di scenari di metaprogrammazione interessanti. Ma ciò non accadrà presto, quindi non sperare. È più un mio sogno a lungo termine che potrebbe non accadere mai.
Altri suggerimenti
Alberi delle espressioni:
http://www.interact-sw.co .uk / iangblog / 2005/09/30 / expressiontrees
http://www.davidhayden.com/blog/ dave / archive / 2006/12/18 / ExpressionTrees.aspx
http://msdn.microsoft.com/en-us/library/bb397951. aspx
http://community.bartdesmet.net/blogs/bart/archive/2006/11/22/Getting-started-with-C_2300_-3.0-Expression-Trees.aspx
http: // blah .winsmarts.com / 2006/05/23 / demistificante-c-30 - part-7-espressione-trees.aspx
Schema visitatori:
http://www.dofactory.com/Patterns/PatternVisitor.aspx
http://en.wikipedia.org/wiki/Visitor_pattern