Wat*_* v2 6 .net c# reflection lambda
我知道我问的是奇怪但只是为了踢,是否有可能得到MethodInfo一个lambda表达式?
我是这样的:
(Func<int, string>(i => i.ToString())).MethodInfo
更新 我想获取方法信息,无论lamda的主体是否是方法调用表达式,即不管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();
}
}
Run Code Online (Sandbox Code Playgroud)
但我想要这个工作:
var intExpression = Expression.Constant(2);
Expression<Func<int, Dog>> conversionExpression = i => new Dog();
var convertExpression5 = Expression.ConvertChecked(intExpression, typeof(Dog), /*...???... */);
Run Code Online (Sandbox Code Playgroud)
你很接近:)
你可以这样做:
MethodInfo meth = (new Func<int, string>(i => i.ToString())).Method;
Run Code Online (Sandbox Code Playgroud)
注意:如果您有一个委托实例的多个"订阅者",则可能会出现问题.
MSDN:http://msdn2.microsoft.com/en-us/library/system.delegate.method
使用System.Linq.Expressions命名空间,您可以执行以下操作。
Expression<Func<int, string>> expression = i => i.ToString();
MethodInfo method = ((MethodCallExpression)expression.Body).Method;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4346 次 |
| 最近记录: |