Esempio n. 1
0
        public MethodRouteResolver(MethodRouteCache routeCache)
        {
            if (routeCache == null)
            {
                throw new ArgumentNullException("routeCache");
            }

            _routeCache = routeCache;
        }
Esempio n. 2
0
        public MethodRouteCache BuildCache(IEnumerable <ServiceEntry> entries)
        {
            var cache = new MethodRouteCache();

            foreach (var entry in entries)
            {
                var serviceType     = entry.DeclaringType;
                var serviceInstance = entry.ServiceInstance;

                var methods = serviceType.GetMethods();
                foreach (var method in methods)
                {
                    var methodLocator  = _extractor.Extract(method);
                    var methodInstance = serviceInstance.GetType()
                                         .GetMethod(method.Name, method.GetParameters().Select(p => p.ParameterType).ToArray());

                    var methodRoute = new MethodRoute(methodLocator, serviceInstance, methodInstance);
                    cache.Add(methodRoute.Locator, methodRoute);
                }
            }

            return(cache);
        }