Can I somehow get the controller name in the routing mapping the WebApiConfig?

What I'd like to do is match a part of the controller name to an action.

```
config.Routes.MapHttpRoute(
    name: "ApiGetAllDefault",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional, action = "Get" + controllerName + "s" },
    constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);

```

**Update**: The reason for all this is when I do the routing as 

```
config.Routes.MapHttpRoute(
    name: "ApiById",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: new { id = @"^[0-9]+$" }
);

config.Routes.MapHttpRoute(
    name: "ApiByActionId",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: null,
    constraints: new { id = @"^[0-9]+$" }
);

config.Routes.MapHttpRoute(
    name: "ApiByAction",
    routeTemplate: "api/{controller}/{action}",
    defaults: null
);

/* Default route */
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

```

requests like `api/World/GetWorld/5` with the action name included do match but some other requests like `api/World/5` don't or respectively would match to more than one action. Since I didn't find a proper default mapping between route and action, I had the idea to define more specific routes for all of my controllers.

```
foreach (Type t in GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyProject.Controllers")) {
    if (typeof(ApiController).IsAssignableFrom(t)) { // Make sure that this controller class is deriving from api controller
        string controllerName = t.Name.Substring(0, t.Name.LastIndexOf("Controller"));  // Remove Controller postfix from name
        config.Routes.MapHttpRoute(
            name: "ApiGet" + controllerName,
            routeTemplate: "api/" + controllerName + "/{id}",
            defaults: new { controller = controllerName, action = "Get" + controllerName },
            constraints: new { id = @"^[0-9]+$", httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
        );

        config.Routes.MapHttpRoute(
            name: "ApiGet" + controllerName + "s",
            routeTemplate: "api/" + controllerName + "/{id}",
            defaults: new { controller = controllerName, id = RouteParameter.Optional, action = "Get" + controllerName + "s" },
            constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
        );
    }
}

```

This solution is working for me, but I'd still like to know if there's a generic route in order to match reuqest without the action name to default actions.