2008-08-26 21 views

Respuesta

6

O sólo es útil como mecanismo de transporte para el código?

Es útil como mecanismo de ejecución para el código. Con el interpreter pattern, los árboles de expresiones se pueden interpretar directamente. Esto es útil porque es muy fácil y rápido de implementar. Dichos intérpretes son omnipresentes y se usan incluso en casos que no parecen "interpretar" nada, p. para imprimir estructuras anidadas.

6

marcos Algunos prueba de unidad burlones hacen uso de árboles de expresión con el fin de establecer inflexible de tipos expectativas/verificaciones. Es decir:

myMock.Verify(m => m.SomeMethod(someObject)); // tells moq to verify that the method 
               // SomeMethod was called with 
               // someObject as the argument 

Aquí, la expresión nunca se ejecuta realmente, pero la expresión en sí contiene la información interesante. La alternativa, sin árboles de expresión sería

myMock.Verify("SomeMethod", someObject) // we've lost the strong typing 
4

árboles de expresión son útiles cuando se necesita acceder a la lógica de funcionamiento con el fin de alterar o volver a aplicar de alguna manera.

LINQ a SQL es un buen ejemplo:

//a linq to sql statement 
var recs (
    from rec in LinqDataContext.Table 
    where rec.IntField > 5 
    select rec); 

Si no teníamos árboles de expresión esta declaración tendría que volver todos los registros, y luego aplicar el C#, donde la lógica para cada uno.

Con árboles de expresión que where rec.IntField > 5 se puede analizar en SQL:

--SQL statment executed 
select * 
from [table] 
where [table].[IntField] > 5 
Cuestiones relacionadas