我正在尝试评估常量表达式的值。在调试器中我可以看到该值:

但我如何在代码中得到它?
表达式的形式为:
x => x.ListPropery[5].ChildProperty
Run Code Online (Sandbox Code Playgroud)
我正在沿着表达式将其转换为字符串,但我陷入了索引器部分。
索引器创建一个MethodCallExpressionon IList<>to get_Item,然后我可以进入参数以获取如下生成的常量表达式:
for(var i = 0; i < list.Count; i++)
{
var j = i;
Expression<Func<IList<TValue>, TValue>> indexer = xs => xs[j];
Run Code Online (Sandbox Code Playgroud)
更新:
(exp.Arguments[0] as MemberExpression).Member
Run Code Online (Sandbox Code Playgroud)
返回一个MemberInfo
您还可以尝试以下操作:
LambdaExpression lambda = Expression.Lambda(exp.Arguments[0]);
var val = lambda.Compile().DynamicInvoke();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1992 次 |
| 最近记录: |