Tengo un delegate
que apunta a alguna función que no conozco cuando creo el objeto delegate
. El objeto está configurado para alguna función más tarde.Árboles de expresiones e invocando a un delegado
También quiero hacer un árbol de expresiones que invoca al delegado con un argumento (por el bien de esta pregunta, el argumento puede ser 5
). Este es el tema con el que estoy luchando; el siguiente código muestra lo que quiero, pero no compila.
Func<int, int> func = null;
Expression expr = Expression.Invoke(func, Expression.Constant(5));
Para este ejemplo que podía hacer (esto es práctico ya que necesito para construir los árboles de expresión en tiempo de ejecución):
Func<int, int> func = null;
Expression<Func<int>> expr =() => func(5);
Esto hace expr
se convierten en:
() => Invoke(value(Test.Program+<>c__DisplayClass0).func, 5)
que parece para significar que para usar el delegate
func
, necesito producir el bit value(Test.Program+<>c__DisplayClass0).func
.
Entonces, ¿cómo puedo crear un árbol de expresiones que invoque a un delegado?
[Linq en acción] (http://www.manning.com/marguerie/) tiene una sección detallada sobre árboles de expresiones. –