21 lines
764 B
C#
21 lines
764 B
C#
|
using System.Linq.Expressions;
|
|||
|
|
|||
|
namespace DD.Persistence.Database.Helpers;
|
|||
|
public class ParameterReplacerVisitor : ExpressionVisitor
|
|||
|
{
|
|||
|
private readonly Expression _newExpression;
|
|||
|
private readonly ParameterExpression _oldParameter;
|
|||
|
|
|||
|
private ParameterReplacerVisitor(ParameterExpression oldParameter, Expression newExpression)
|
|||
|
{
|
|||
|
_oldParameter = oldParameter;
|
|||
|
_newExpression = newExpression;
|
|||
|
}
|
|||
|
|
|||
|
internal static Expression Replace(Expression expression, ParameterExpression oldParameter, Expression newExpression)
|
|||
|
=> new ParameterReplacerVisitor(oldParameter, newExpression).Visit(expression);
|
|||
|
|
|||
|
protected override Expression VisitParameter(ParameterExpression p)
|
|||
|
=> p == _oldParameter ? _newExpression : p;
|
|||
|
}
|