public MethodRouteResolver(MethodRouteCache routeCache) { if (routeCache == null) { throw new ArgumentNullException("routeCache"); } _routeCache = routeCache; }
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); }