我知道我在問奇怪的事情,但只是爲了踢,是否有可能得到一個lambda表達式的MethodInfo
?獲得一個lambda表達式的方法信息
我這樣的事情後:
(Func<int, string>(i => i.ToString())).MethodInfo
UPDATE 我想獲得方法的信息不管LAMDA的身體是一個方法調用表達與否,即不管拉姆達的身體是什麼類型的表達。
因此,對於例如
這可能有效。
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), /*...???... */);
表達式沒有方法信息。如果你編譯它,你可以從委託中獲取方法信息。 – leppie
我對創建表達式不感興趣。我在下面添加了更新以迴應Timothy Shields的回答。我想要的只是一個委託的methodInfo。可能? –
This works fine'(new Func(i => i.ToString()))。Method' –
leppie