gpt4 book ai didi

c# - 获取 lambda 表达式的 MethodInfo

转载 作者:太空狗 更新时间:2023-10-29 21:08:34 27 4
gpt4 key购买 nike

我知道我问的很奇怪但只是为了好玩,是否有可能获得 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com