2008-12-04 14 views
6

Recientemente escribí una herramienta de consulta dinámica utilizando árboles de expresiones y, a medida que avanzaba, el poder de la expresión comenzó a aparecer en mí. Mi herramienta de consulta también podría formar la base de una herramienta de informes, un motor dinámico de decisiones y quizás otros casos en los que necesite trabajar con objetos dinámicos de forma abstracta.Árboles de expresiones en .NET - ¿Bibliotecas?

El proceso ha sido doloroso (llamadas recursivas a métodos genéricos por reflexión - ugh) así que me pregunto si alguien ha creado una biblioteca genérica que pueda aprovechar el poder de los árboles de expresión para realizar algunas de estas tareas. He visto PredicateBuilder, pero ¿alguien sabe de otros?

Respuesta

0

¿Has mirado LINQ y la interfaz IQueryable? Así es como implementaron LINQ to SQL, etc.

1

¿Has mirado en el DLR? No sé mucho al respecto en detalle, pero tengo entendido que el mecanismo del árbol de expresiones que está detrás de escena en Linq-to-SQL se ha publicado efectivamente en el DLR.

+0

No, esto no es cierto. Se ve similar, pero el DLR es muy inferior. – leppie

+0

Los árboles DLR comparten una gran cantidad de puntos en común con Expression, y IIRC están un poco más fusionados en .NET 4.0 CTP. –

1

NJection es una biblioteca que se ocupa de la inyección de código a través de archivos de configuración.
NJection.LambdaConverter es una biblioteca que transforma a los delegados en árboles de expresiones.

Cuestiones relacionadas