Fel*_*oto 13 c# lambda expression-trees
如何获取MethodCallExpression的参数值?
今天我这样做,但速度不够快:
private static object GetArgumentValue(Expression element)
{
LambdaExpression l = Expression.Lambda(Expression.Convert(element, element.Type));
return l.Compile().DynamicInvoke();
}
Run Code Online (Sandbox Code Playgroud)
这个方法从Expression获取值,但是如果我知道Expression总是来自MethodCallExpression.Arguments,我可以优化它吗?
我想我可以改变第一线,但我不知道如果适用于所有情况:
LambdaExpression l = Expression.Lambda(element);
Run Code Online (Sandbox Code Playgroud)
蛋糕
class Program
{
static void Main(string[] args)
{
Expression<Action<string>> action = a => Console.WriteLine("asdf");
var mce = action.Body as MethodCallExpression;
Console.WriteLine((mce.Arguments[0] as ConstantExpression).Value);
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5145 次 |
最近记录: |