mahjong_group/server/CoreCms.Net.Model/Entities/Expression/ParameterRebinder.cs
2026-01-01 14:35:52 +08:00

38 lines
1.5 KiB
C#

/***********************************************************************
* Project: CoreCms
* ProjectName: 核心内容管理系统
* Web: https://www.corecms.net
* Author: 大灰灰
* Email: jianweie@163.com
* CreateTime: 2021/1/31 21:45:10
* Description: 暂无
***********************************************************************/
using System.Collections.Generic;
using System.Linq.Expressions;
namespace CoreCms.Net.Model.Entities.Expression
{
public class ParameterRebinder : ExpressionVisitor
{
private readonly Dictionary<ParameterExpression, ParameterExpression> map;
public ParameterRebinder(Dictionary<ParameterExpression, ParameterExpression> map)
{
this.map = map ?? new Dictionary<ParameterExpression, ParameterExpression>();
}
public static System.Linq.Expressions.Expression ReplaceParameters(
Dictionary<ParameterExpression, ParameterExpression> map, System.Linq.Expressions.Expression exp)
{
return new ParameterRebinder(map).Visit(exp);
}
protected override System.Linq.Expressions.Expression VisitParameter(ParameterExpression p)
{
ParameterExpression replacement;
if (map.TryGetValue(p, out replacement)) p = replacement;
return base.VisitParameter(p);
}
}
}