BaseResolve.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Reflection;
  6. using System.Text;
  7. namespace SqlSugar
  8. {
  9. /// <summary>
  10. /// BaseResolve-Append
  11. /// </summary>
  12. public partial class BaseResolve
  13. {
  14. private BaseResolve()
  15. {
  16. }
  17. public BaseResolve(ExpressionParameter parameter)
  18. {
  19. this.Expression = parameter.CurrentExpression;
  20. this.Context = parameter.Context;
  21. this.BaseParameter = parameter;
  22. }
  23. public BaseResolve Start()
  24. {
  25. Expression expression;
  26. ExpressionParameter parameter;
  27. SetParameter(out expression, out parameter);
  28. if (expression is LambdaExpression)
  29. {
  30. return new LambdaExpressionResolve(parameter);
  31. }
  32. else if (expression is BinaryExpression && expression.NodeType == ExpressionType.Coalesce)
  33. {
  34. return new CoalesceResolveItems(parameter);
  35. }
  36. else if (expression is BinaryExpression)
  37. {
  38. return new BinaryExpressionResolve(parameter);
  39. }
  40. else if (expression is BlockExpression)
  41. {
  42. Check.ThrowNotSupportedException("BlockExpression");
  43. }
  44. else if (expression is ConditionalExpression)
  45. {
  46. return new ConditionalExpressionResolve(parameter);
  47. }
  48. else if (expression is MethodCallExpression)
  49. {
  50. return new MethodCallExpressionResolve(parameter);
  51. }
  52. else if (expression is MemberExpression && ((MemberExpression)expression).Expression == null)
  53. {
  54. return new MemberNoExpressionResolve(parameter);
  55. }
  56. else if (expression is MemberExpression && ((MemberExpression)expression).Expression.NodeType == ExpressionType.Constant)
  57. {
  58. return new MemberConstExpressionResolve(parameter);
  59. }
  60. else if (expression is MemberExpression && ((MemberExpression)expression).Expression.NodeType == ExpressionType.New)
  61. {
  62. return new MemberNewExpressionResolve(parameter);
  63. }
  64. else if (expression is ConstantExpression)
  65. {
  66. return new ConstantExpressionResolve(parameter);
  67. }
  68. else if (expression is MemberExpression)
  69. {
  70. return new MemberExpressionResolve(parameter);
  71. }
  72. else if (expression is UnaryExpression)
  73. {
  74. return new UnaryExpressionResolve(parameter);
  75. }
  76. else if (expression is MemberInitExpression)
  77. {
  78. return new MemberInitExpressionResolve(parameter);
  79. }
  80. else if (expression is NewExpression)
  81. {
  82. return new NewExpressionResolve(parameter);
  83. }
  84. else if (expression is NewArrayExpression)
  85. {
  86. return new NewArrayExpessionResolve(parameter);
  87. }
  88. else if (expression is ParameterExpression)
  89. {
  90. return new TypeParameterExpressionReolve(parameter);
  91. }
  92. else if (expression != null && expression.NodeType.IsIn(ExpressionType.NewArrayBounds))
  93. {
  94. Check.ThrowNotSupportedException("ExpressionType.NewArrayBounds");
  95. }
  96. return null;
  97. }
  98. }
  99. }