示例#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)
        {
            MethodCallExpressionFingerprint other =
                (obj as MethodCallExpressionFingerprint);

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

            return(_arguments.SequenceEqual(other._arguments) &&
                   _method == other._method &&
                   Object.Equals(_target, other._target) &&
                   base.Equals(other));
        }