103 lines
3.5 KiB
C#
103 lines
3.5 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Linq.Expressions;
|
|||
|
using System.Reflection;
|
|||
|
using System.Text;
|
|||
|
namespace SqlSugar
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// BaseResolve-Append
|
|||
|
/// </summary>
|
|||
|
public partial class BaseResolve
|
|||
|
{
|
|||
|
|
|||
|
private BaseResolve()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
public BaseResolve(ExpressionParameter parameter)
|
|||
|
{
|
|||
|
this.Expression = parameter.CurrentExpression;
|
|||
|
this.Context = parameter.Context;
|
|||
|
this.BaseParameter = parameter;
|
|||
|
}
|
|||
|
|
|||
|
public BaseResolve Start()
|
|||
|
{
|
|||
|
Expression expression;
|
|||
|
ExpressionParameter parameter;
|
|||
|
SetParameter(out expression, out parameter);
|
|||
|
if (expression is LambdaExpression)
|
|||
|
{
|
|||
|
return new LambdaExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is BinaryExpression && expression.NodeType == ExpressionType.Coalesce)
|
|||
|
{
|
|||
|
return new CoalesceResolveItems(parameter);
|
|||
|
}
|
|||
|
else if (expression is BinaryExpression)
|
|||
|
{
|
|||
|
return new BinaryExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is BlockExpression)
|
|||
|
{
|
|||
|
Check.ThrowNotSupportedException("BlockExpression");
|
|||
|
}
|
|||
|
else if (expression is ConditionalExpression)
|
|||
|
{
|
|||
|
return new ConditionalExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is MethodCallExpression)
|
|||
|
{
|
|||
|
return new MethodCallExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is MemberExpression && ((MemberExpression)expression).Expression == null)
|
|||
|
{
|
|||
|
return new MemberNoExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is MemberExpression && ((MemberExpression)expression).Expression.NodeType == ExpressionType.Constant)
|
|||
|
{
|
|||
|
return new MemberConstExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is MemberExpression && ((MemberExpression)expression).Expression.NodeType == ExpressionType.New)
|
|||
|
{
|
|||
|
return new MemberNewExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is ConstantExpression)
|
|||
|
{
|
|||
|
return new ConstantExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is MemberExpression)
|
|||
|
{
|
|||
|
return new MemberExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is UnaryExpression)
|
|||
|
{
|
|||
|
return new UnaryExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is MemberInitExpression)
|
|||
|
{
|
|||
|
return new MemberInitExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is NewExpression)
|
|||
|
{
|
|||
|
return new NewExpressionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is NewArrayExpression)
|
|||
|
{
|
|||
|
return new NewArrayExpessionResolve(parameter);
|
|||
|
}
|
|||
|
else if (expression is ParameterExpression)
|
|||
|
{
|
|||
|
return new TypeParameterExpressionReolve(parameter);
|
|||
|
}
|
|||
|
else if (expression != null && expression.NodeType.IsIn(ExpressionType.NewArrayBounds))
|
|||
|
{
|
|||
|
Check.ThrowNotSupportedException("ExpressionType.NewArrayBounds");
|
|||
|
}
|
|||
|
return null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|