Pregunta

¿Cuál es el máximo que puede hacer el árbol de expresiones LINQ?

¿Puede definir una clase? ¿Qué tal un método, con todo el nombre declarado, modificadores, tipo de parámetro y tipo de retorno?

¿Debe el programa definir siempre el árbol él mismo? ¿Es posible generar el árbol a partir de un archivo C # dado?

¿Dónde puedo obtener recursos para aprender acerca de cómo escribir Expression Tree y Expression Tree Visitor de nivel básico a avanzado? (los artículos y videos serán geniales)

Gracias por aquellos que pueden ayudar ...

¿Fue útil?

Solución

En C # 3, los árboles de expresión pueden representar expresiones . De ahí el nombre. Y se limitan aún más a un subconjunto de expresiones de C #: sin expresiones de asignación, sin expresiones que involucren tipos de puntero, etc.

En las bibliotecas que se enviarán con C # 4, hemos extendido el árbol de expresión library para que también admita árboles de instrucciones. Sin embargo, C # 4 NO traducirá automáticamente una declaración-lambda en un "árbol de declaraciones".

Esa es una característica obvia y útil a la que simplemente no tuvimos tiempo de acceder para C # 4. Lo consideraremos para futuras versiones hipotéticas. Si tiene un escenario de usuario realmente excelente para árboles de declaraciones, me encantaría escucharlo.

La extensión adicional obvia a todo lo que son árboles de declaración, que representarían declaraciones de clase, declaraciones de estructura, etc. Tener homoiconicidad total entre el lenguaje C # y la biblioteca del árbol de expresiones sería increíble. Permitiría todo tipo de escenarios de metaprogramación interesantes. Pero eso no sucederá pronto, así que no te hagas ilusiones. Eso es más un sueño mío a largo plazo que nunca podría suceder.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top