Tôi biết tôi đang yêu cầu kỳ lạ nhưng chỉ cho đá, có thể lấy MethodInfo
cho một biểu thức lambda?Lấy MethodInfo cho một biểu thức lambda
tôi sau khi một cái gì đó như thế này:
(Func<int, string>(i => i.ToString())).MethodInfo
CẬP NHẬT Tôi muốn để có được các thông tin phương pháp bất kể cơ thể của lamda là một biểu thức gọi phương thức hay không, tức là không phụ thuộc loại biểu hiện cơ thể của lambda là gì.
Vì vậy, ví dụ:
Điều này có thể hiệu quả.
var intExpression = Expression.Constant(2);
Expression<Func<int, Dog>> conversionExpression = i => Program.GetNewDog(i);
var convertExpression5 = Expression.ConvertChecked(intExpression, typeof(Dog), ((MethodCallExpression)(conversionExpression.Body)).Method);
class Program
{
static Dog GetNewDog(int i)
{
return new Dog();
}
}
Nhưng tôi muốn ngay cả điều này để làm việc:
var intExpression = Expression.Constant(2);
Expression<Func<int, Dog>> conversionExpression = i => new Dog();
var convertExpression5 = Expression.ConvertChecked(intExpression, typeof(Dog), /*...???... */);
Biểu thức không có thông tin về phương pháp. Nếu bạn biên dịch nó, bạn có thể lấy thông tin về phương thức từ đại biểu. – leppie
Tôi không quan tâm đến việc tạo một biểu thức. Tôi đã thêm bản cập nhật này để trả lời câu trả lời của Timothy Shields dưới đây. Tất cả những gì tôi muốn là một methodInfo từ một đại biểu. Khả thi? –
Điều này hoạt động tốt '(mới Func (i => i.ToString())) Phương pháp' –
leppie