Ejemplo n.º 1
0
        public static ExpressionFingerprint Create(Expression expression, ParserContext context)
        {
            BinaryExpression binaryExpression = (expression as BinaryExpression);

            if (binaryExpression != null)
            {
                return(BinaryExpressionFingerprint.Create(binaryExpression, context));
            }

            ConditionalExpression conditionalExpression = (expression as ConditionalExpression);

            if (conditionalExpression != null)
            {
                return(ConditionalExpressionFingerprint.Create(conditionalExpression, context));
            }

            ConstantExpression constantExpression = (expression as ConstantExpression);

            if (constantExpression != null)
            {
                return(ConstantExpressionFingerprint.Create(constantExpression, context));
            }

            MemberExpression memberExpression = (expression as MemberExpression);

            if (memberExpression != null)
            {
                return(MemberExpressionFingerprint.Create(memberExpression, context));
            }

            MethodCallExpression methodCallExpression = (expression as MethodCallExpression);

            if (methodCallExpression != null)
            {
                return(MethodCallExpressionFingerprint.Create(methodCallExpression, context));
            }

            ParameterExpression parameterExpression = (expression as ParameterExpression);

            if (parameterExpression != null)
            {
                return(ParameterExpressionFingerprint.Create(parameterExpression, context));
            }

            UnaryExpression unaryExpression = (expression as UnaryExpression);

            if (unaryExpression != null)
            {
                return(UnaryExpressionFingerprint.Create(unaryExpression, context));
            }

            return(null);
        }
        public override bool Equals(object obj)
        {
            BinaryExpressionFingerprint other =
                (obj as BinaryExpressionFingerprint);

            if (other == null)
            {
                return(false);
            }

            return(_isLiftedToNull == other._isLiftedToNull &&
                   _method == other._method &&
                   Object.Equals(_left, other._left) &&
                   Object.Equals(_right, other._right) &&
                   base.Equals(other));
        }