Sto cercando di capire se esiste una sintassi semplice per convertire un gruppo di metodi in un'espressione. Sembra abbastanza facile con lambda, ma non si traduce a metodi:Converti gruppo di metodi in espressione
Attribuite
public delegate int FuncIntInt(int x);
tutti i sotto sono validi:
Func<int, int> func1 = x => x;
FuncIntInt del1 = x => x;
Expression<Func<int, int>> funcExpr1 = x => x;
Expression<FuncIntInt> delExpr1 = x => x;
Ma se provo lo stesso con un metodo istanza, si interrompe alle espressioni:
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
Entrambi gli ultimi due non riescono a compilare con "C annot metodo di conversione del gruppo 'AFuncIntInt' al tipo non delegato 'System.Linq.Expressions.Expression < ...>'. Hai intenzione di richiamare il metodo?"
Così, c'è una buona sintassi per l'acquisizione di un metodo di Grou in un'espressione?
grazie, Arne
Dooh .. Mi sento stupido ora. Funziona perfettamente. Grazie –
Hai mai trovato una sintassi migliore per questo? Non capisco completamente perché il compilatore non riesca a capire il gruppo di metodi di un'espressione> quando può capirlo per Func .. –
skrebbel
La mia ipotesi è che foo.AFuncIntInt sia un methodgroup, non un'espressione e non ci sono conversioni automatiche da methodgroup a expression, tuttavia esiste una conversione automatica per accettare un lambda come un methodgroup o un'espressione –