Exemplo n.º 1
0
        public void AddMethodCalls(object target, MethodBase hostMethod, IEnumerable <MethodBase> interceptedMethods, IMethodCallMap methodCallMap,
                                   StackTrace stackTrace)
        {
            var targetMethods = interceptedMethods.Where(method => _methodFilter(method)).ToArray();

            foreach (var method in targetMethods)
            {
                methodCallMap.Add(_methodFilter, _methodCall);
            }
        }
        public void AddMethodCalls(object target, MethodBase hostMethod, IEnumerable <MethodBase> interceptedMethods, IMethodCallMap methodCallMap,
                                   StackTrace stackTrace)
        {
            // Map the implementation to the most compatible method signature
            var bestMatch = interceptedMethods.GetBestMatch(_targetMethod);

            if (bestMatch == null)
            {
                return;
            }

            // Verify the delegate signature
            if (!bestMatch.HasCompatibleMethodSignatureWith(_implementation.Method))
            {
                return;
            }

            methodCallMap.Add(bestMatch, new DelegateMethodCall(_implementation));
        }