メソッド グループを式に変換するための簡単な構文があるかどうかを調べようとしています。ラムダで十分に簡単に思えますが、メソッドには変換されません:
与えられた
public delegate int FuncIntInt(int x);
以下はすべて有効です。
Func<int, int> func1 = x => x;
FuncIntInt del1 = x => x;
Expression<Func<int, int>> funcExpr1 = x => x;
Expression<FuncIntInt> delExpr1 = x => x;
しかし、インスタンスメソッドで同じことをしようとすると、式で壊れます:
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
最後の 2 つは両方とも、「メソッド グループ 'AFuncIntInt' を非デリゲート型 'System.Linq.Expressions.Expression<...>' に変換できません。メソッドを呼び出すつもりでしたか?」というエラーでコンパイルに失敗します。
では、式でメソッド グループをキャプチャするための適切な構文はありますか?
ありがとう、アルネ