Quindi ho uno delegate
che punta a una funzione che non conosco quando creo l'oggetto delegate
. L'oggetto è impostato su una funzione successiva.Alberi di espressione e invocazione di un delegato
Inoltre, desidero creare un albero di espressioni che richiami il delegato con un argomento (nell'interesse della domanda l'argomento può essere 5
). Questo è il bit con cui sto lottando; il codice qui sotto mostra ciò che voglio ma non viene compilato.
Func<int, int> func = null;
Expression expr = Expression.Invoke(func, Expression.Constant(5));
Per questo esempio ho potuto fare (questo è pratico da quando ho bisogno di costruire gli alberi di espressione in fase di esecuzione):
Func<int, int> func = null;
Expression<Func<int>> expr =() => func(5);
Questo rende expr
diventano:
() => Invoke(value(Test.Program+<>c__DisplayClass0).func, 5)
che sembra per significare che per utilizzare delegate
func
, ho bisogno di produrre il bit value(Test.Program+<>c__DisplayClass0).func
.
Quindi, come posso creare un albero di espressioni che invochi un delegato?
[Linq in azione] (http://www.manning.com/marguerie/) ha una sezione dettagliata sugli alberi di espressione. –