Tôi đang cố gắng tìm ra nếu có một cú pháp đơn giản để chuyển đổi Nhóm phương pháp thành một biểu thức. Có vẻ như đủ dễ dàng với lambdas, nhưng nó không dịch với các phương pháp:Chuyển đổi nhóm phương thức thành Biểu thức
Với
public delegate int FuncIntInt(int x);
tất cả các dưới đây là hợp lệ:
Func<int, int> func1 = x => x;
FuncIntInt del1 = x => x;
Expression<Func<int, int>> funcExpr1 = x => x;
Expression<FuncIntInt> delExpr1 = x => x;
Nhưng nếu tôi cố gắng cùng với một phương pháp thể hiện, phương thức này được chia nhỏ theo Biểu thức:
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ả hai trường hợp cuối cùng không thể biên dịch bằng "C nhóm phương pháp chuyển đổi chú thích 'AFuncIntInt' thành loại không được ủy quyền 'System.Linq.Expressions.Expression < ...>'. Bạn có ý định gọi phương pháp này?"
Vậy là có một cú pháp tốt để chụp một Grou phương pháp trong một biểu thức?
cảm ơn, Arne
Dooh .. Tôi cảm thấy ngu ngốc bây giờ. Điều đó hoạt động hoàn hảo. Cảm ơn –
Bạn đã bao giờ tìm thấy một cú pháp đẹp hơn cho cái này chưa? Tôi không hoàn toàn hiểu tại sao trình biên dịch không thể tìm ra nhóm phương thức của một biểu thức> khi nó có thể tìm ra cho Func .. –
skrebbel
Giả định của tôi là foo.AFuncIntInt là một nhóm phương thức, không phải là một biểu thức và không có chuyển đổi tự động từ methodgroup thành biểu thức, tuy nhiên có chuyển đổi tự động để chấp nhận lambda như một nhóm phương thức hoặc một biểu thức –