Expression d'arbres et invocation d'un délégué

J'ai donc un delegate qui points à une fonction dont je ne sais pas vraiment quand je d'abord créer le delegate objet. L'objet est défini à une fonction plus tard.

J'ai aussi envie de faire une arborescence d'expression qui appelle le délégué à l'aide d'un argument (pour cette question, l'amour de l'argument peut être 5). C'est ce que je suis aux prises avec; le code ci-dessous montre ce que je veux mais ça ne compile pas.

Func<int, int> func = null;
Expression expr = Expression.Invoke(func, Expression.Constant(5));

Pour cet exemple, je pourrais faire (c'est pratique car j'ai besoin de construire l'expression d'arbres lors de l'exécution):

Func<int, int> func = null;
Expression<Func<int>> expr = () => func(5);

Ce fait expr devenir:

() => Invoke(value(Test.Program+<>c__DisplayClass0).func, 5)

Qui semble signifier que l'utilisation de la delegate funcj'ai besoin de produire de la value(Test.Program+<>c__DisplayClass0).func peu.

Alors, comment puis-je faire une arborescence d'expression qui invoque un délégué?

source d'informationauteur