He creado una expresión lambda en el tiempo de ejecución y quiero evaluarla, ¿cómo puedo hacer eso? Solo quiero ejecutar la expresión por sí mismo, no en contra de ninguna colección u otros valores.Obteniendo el resultado de una Expresión
En esta etapa, una vez que se ha creado, puedo ver que es del tipo Expression<Func<bool>>
, con un valor de {() => "MyValue".StartsWith("MyV")}
.
Pensé que en ese momento podría llamar al var result = Expression.Invoke(expr, null);
y tendría mi resultado booleano. Pero eso solo devuelve un InvocationExpression
, que en el depurador se parece a {Invoke(() => "MyValue".StartsWith("MyV"))}
.
Estoy bastante seguro de que estoy cerca, ¡pero no puedo entender cómo obtener mi resultado!
Gracias.
Gracias , exactamente lo que me estaba perdiendo Y claramente explicado también :) – Marcus
@Marcus - ¡Me alegra ayudar! –
Solo un poco de azúcar sintáctico. Puede reemplazar las dos últimas líneas con solo una: Boolean result = expression.Compile()(); –