public RouteEntry CreateRoute(DirectRouteFactoryContext context) { if (!context.TargetIsAction) { throw new InvalidOperationException("AutoNamedRouteAttribute should be only used on actions"); } if (!context.Actions.Any()) { throw new InvalidOperationException("Actions should be empty"); } IDirectRouteBuilder builder = context.CreateBuilder(Template); // generate name: // get the first action descriptor from our list because we only need to get its name var actionDescriptor = context.Actions.First(); var controllerDescriptor = actionDescriptor.ControllerDescriptor; var actionName = actionDescriptor.ActionName; var controllerName = controllerDescriptor.ControllerName; // get area also var areaName = getAreaName(controllerDescriptor); // compose a name builder.Name = T4Extensions.ComposeAutoRouteName(areaName, controllerName, actionName); builder.Order = Order; return(builder.Build()); }