Estoy intentando averiguar si hay una sintaxis simple para convertir un grupo de métodos en una expresión. Parece bastante fácil con lambdas, pero no se traduce en métodos:Convertir grupo de métodos en expresión
Dadas
public delegate int FuncIntInt(int x);
todos de los siguientes son válidos:
Func<int, int> func1 = x => x;
FuncIntInt del1 = x => x;
Expression<Func<int, int>> funcExpr1 = x => x;
Expression<FuncIntInt> delExpr1 = x => x;
pero si trato de la misma con una método de instancia, se descompone en las expresiones:
Foo foo = new Foo();
Func<int, int> func2 = foo.AFuncIntInt;
FuncIntInt del2 = foo.AFuncIntInt;
Expression<Func<int, int>> funcExpr2 = foo.AFuncIntInt; // does not compile
Expression<FuncIntInt> delExpr2 = foo.AFuncIntInt; //does not compile
Ambos dos últimos no se compilan con "C anotar convertir el grupo de métodos 'AFuncIntInt' al tipo no delegado 'System.Linq.Expressions.Expression < ...>'. ¿Se tiene la intención de invocar el método?"
Entonces, ¿hay una buena sintaxis para la captura de un grou método en una expresión?
gracias, Arne
Dooh ... Me siento estúpido ahora. Eso funciona perfectamente. Gracias –
¿Alguna vez encontró una sintaxis más agradable para esta? No entiendo completamente por qué el compilador no puede encontrar el grupo de métodos de una Expresión> cuando puede resolverlo para Func .. –
skrebbel
Mi suposición es que foo.AFuncIntInt es un grupo de métodos, no una expresión y no hay conversiones automáticas de grupo de métodos a expresión, sin embargo, hay una conversión automática para aceptar un lambda como un grupo de métodos o una expresión –