メソッドグループを式に変換するための単純な構文があるかどうかを調べようとしています。これは、ラムダと十分に簡単そうですが、それはメソッドに変換されません。メソッドグループを式に変換する
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
は最後の二つのどちらも、C」でコンパイルに失敗しますメソッドグループ 'AFuncIntInt'を非代理人型 'System.Linq.Expressions.Expression <>'に変換します。あなたは、メソッドを呼び出すするつもりでしたか?」
だから、表現方法のgrouをキャプチャするための良好な構文がありますか?
おかげで、 アルネを
Dooh ..今私は愚かな気がする。それは完全に機能します。おかげで –
あなたはこれまでより良い構文を見つけましたか?コンパイラがFuncのメソッドグループを理解できない理由を完全には理解していません。です。 –
skrebbel
私の前提は、foo.AFuncIntIntは式ではなくメソッドグループですメソッドグループから式への自動変換はありませんが、ラムダをメソッドグループまたは式として受け入れるための自動変換があります –