Rapid.Kernel.Expressions Expression拓展获取Expression中的相关内容

这个博客主要介绍了Rapid.Kernel.Expressions库中的ExpressionExtension静态类,用于获取Expression中的详细内容。包括MemberExpression、LambdaExpression、UnaryExpression、BinaryExpression、MethodCallExpression和ConstantExpression的处理方式,以及通过NodeType生成对应操作符的方法。
摘要由CSDN通过智能技术生成

using Rapid.Kernel.Reflection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;

namespace Rapid.Kernel.Expressions
{
    /// <summary>
    /// Expression拓展获取Expression中的相关内容
    /// </summary>
    public static class ExpressionExtension
    {
        /// <summary>
        /// 获取Expression
        /// </summary>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static string GetExpression(this Expression expression)
        {
            var expressionType = expression?.GetType();
            var expressionTypeFullName = expressionType?.FullName;
            if (expression is MemberExpression memberExpression)
            {
                var result = memberExpression.RetrieveValue();
                if (result.Key)
                {
                    return $"{result.Value?.ToString()}";
                }
                else
                {
                    return $"{memberExpression.Expression.GetVariable("Name")}" +
                           $"{StringConsts.ENPeriod}" +
                           $"{result.Value?.ToString()}";
                }
            }
            else if (expression is LambdaExpression lambdaExpression)
            {
                return lambdaExpression.Body.GetExpression();
            }
            else if (expression is UnaryExpression unaryExpression)
            {
                return unaryExpression.Operand.GetExpression();
            }
            else if (expression is BinaryExpression binaryExpressio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值