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());
 }