예제 #1
0
        public static ExpressionFingerprintChain GetFingerprintChain(Expression expr, out List <object> capturedConstants)
        {
            FingerprintingExpressionVisitor fingerprintingExpressionVisitor = new FingerprintingExpressionVisitor();

            fingerprintingExpressionVisitor.Visit(expr);
            if (fingerprintingExpressionVisitor._gaveUp)
            {
                capturedConstants = null;
                return(null);
            }
            capturedConstants = fingerprintingExpressionVisitor._seenConstants;
            return(fingerprintingExpressionVisitor._currentChain);
        }
        // Returns the fingerprint chain + captured constants list for this expression, or null
        // if the expression couldn't be fingerprinted.

        public static ExpressionFingerprintChain?GetFingerprintChain(Expression expr, out List <object>?capturedConstants)
        {
            var visitor = new FingerprintingExpressionVisitor();

            visitor.Visit(expr);

            if (visitor._gaveUp)
            {
                capturedConstants = null;
                return(null);
            }
            else
            {
                capturedConstants = visitor._seenConstants;
                return(visitor._currentChain);
            }
        }