ParameterReplacer.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System.Linq.Expressions;
  2. namespace Masuit.Tools.Core.Linq
  3. {
  4. /// <summary>
  5. /// linq参数替换器
  6. /// </summary>
  7. public class ParameterReplacer : ExpressionVisitor
  8. {
  9. /// <summary>
  10. /// linq参数替换器
  11. /// </summary>
  12. /// <param name="paramExpr"></param>
  13. public ParameterReplacer(ParameterExpression paramExpr)
  14. {
  15. this.ParameterExpression = paramExpr;
  16. }
  17. /// <summary>
  18. /// 参数表达式
  19. /// </summary>
  20. public ParameterExpression ParameterExpression { get; private set; }
  21. /// <summary>
  22. /// 表达式替换
  23. /// </summary>
  24. /// <param name="expr"></param>
  25. /// <returns></returns>
  26. public Expression Replace(Expression expr)
  27. {
  28. return this.Visit(expr);
  29. }
  30. /// <summary>
  31. /// 表达式参数访问
  32. /// </summary>
  33. /// <param name="p"></param>
  34. /// <returns></returns>
  35. protected override Expression VisitParameter(ParameterExpression p)
  36. {
  37. return this.ParameterExpression;
  38. }
  39. }
  40. }