private Type TryGetControllerType(string area, string category, string controller) { var typeDic = _apiControllerTypes.Value; var controllers = typeDic.Keys.ToList(); var namespaceApiControllerSelector = _namespaceApiSelectorLazy.Value; try { var theOne = namespaceApiControllerSelector.Select(controllers, ControllerFolderPrefix, controller, area, category); if (theOne != null) { return(typeDic[theOne]); } } catch (Exception ex) { WebApiSelectorHelper.Error(string.Format("Select ApiController For {0}.{1}.{2} Ex!", area, category, controller), ex); return(null); } return(null); }
public ClassifiedHttpControllerSelector(HttpConfiguration configuration) : base(configuration) { //check instance count, todo _configuration = configuration; _apiControllerTypes = new Lazy <ConcurrentDictionary <string, Type> >(GetAllControllerTypes); _namespaceApiSelectorLazy = new Lazy <IClassifiedHttpControllerSelectorService>(() => WebApiSelectorHelper.Resolve()); }