Expression exp,讨教下可以通过exp获取到值吗

.Net技术 码拜 8年前 (2016-03-01) 793次浏览
public static int _成功订单个数 = 111;
        private void test(Expression<Func<int,int>> exp)
        {
            //这里可以获取_成功订单个数的值111吗?
            var body = exp.Body as MemberExpression;
            Console.WriteLine("参数名:" + body.Member.Name);
        }
        private void buttonLogin_Click(object sender, EventArgs e)
        {
            test(p=>_成功订单个数);
       }
解决方案

60

exp.Compile()(0);

30

VS里面每个参数看下就应该知道了啊

        //
        // 摘要:
        //     将表达式树描述的 lambda 表达式编译为可执行代码,并生成表示该 lambda 表达式的委托。
        //
        // 返回结果:
        //     一个 TDelegate 类型的委托,它表示由 System.Linq.Expressions.Expression`1 描述的已编译的 lambda 表达式。
        public TDelegate Compile();
        //
        // 摘要:
        //     生成表示 lambda 表达式的委托。
        //
        // 参数:
        //   debugInfoGenerator:
        //     编译器用于标记序列点并批注局部变量的调试信息生成器。
        //
        // 返回结果:
        //     包含 lambda 的已编译版本的委托。
        public TDelegate Compile(DebugInfoGenerator debugInfoGenerator);

10

真是脱了裤子放屁,直接传参的时候把描述和值都传进去不就可以了,非要这么折腾,不知道图的是什么。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Expression exp,讨教下可以通过exp获取到值吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)