private Type GetControllerType(String area, String controller) { String controllerType = controller + "Controller"; IEnumerable <Type> controllers = ControllerTypes .Where(type => type.Name.Equals(controllerType, StringComparison.OrdinalIgnoreCase)); if (String.IsNullOrEmpty(area)) { controllers = controllers.Where(type => !type.IsDefined(typeof(AreaAttribute), false)); } else { controllers = controllers.Where(type => type.IsDefined(typeof(AreaAttribute), false) && String.Equals(type.GetCustomAttribute <AreaAttribute>(false).Name, area, StringComparison.OrdinalIgnoreCase)); } return(controllers.Single()); }