我知道我问的很奇怪但只是为了好玩,是否有可能获得 MethodInfo
对于 lambda 表达式?
我正在寻找这样的东西:
(Func<int, string>(i => i.ToString())).MethodInfo
更新 无论 lambda 的主体是否是方法调用表达式,我都想获取方法信息,即无论 lambda 的主体是什么类型的表达式。
所以,例如
这可能有效。
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();
}
}
但我什至希望它能工作:
var intExpression = Expression.Constant(2);
Expression<Func<int, Dog>> conversionExpression = i => new Dog();
var convertExpression5 = Expression.ConvertChecked(intExpression, typeof(Dog), /*...???... */);
最佳答案
你很接近:)
你可以这样做:
MethodInfo meth = (new Func<int, string>(i => i.ToString())).Method;
注意:如果一个委托(delegate)实例有多个“订阅者”,这可能会出现问题。
引用:https://learn.microsoft.com/en-us/dotnet/api/system.delegate.method
关于c# - 获取 lambda 表达式的 MethodInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792849/