예제 #1
0
        public virtual MethodInvokerEntry Get(MethodDescriptor methodDescriptor)
        {
            var result = InterceptorFactory.GetAllInterceptors(methodDescriptor, _services);

            if (!_caches.TryGetValue(methodDescriptor, out var cache))
            {
                cache = new MethodInvokerEntry
                {
                    Client                   = _goClient,
                    Codec                    = methodDescriptor.Codec,
                    Interceptors             = result.Interceptors,
                    KeyValueFormatterFactory = _keyValueFormatterFactory,
                    TemplateParser           = _templateParser,
                    UrlTemplate              = new UrlDescriptor(methodDescriptor.UrlTemplate.Template)
                };

                _caches[methodDescriptor] = cache;
            }
            cache.Interceptors = result.Interceptors;

            return(cache);
        }