// Internal for testing internal static RouteEntry CreateRouteEntry( string areaPrefix, string controllerPrefix, IDirectRouteFactory factory, IReadOnlyCollection <ActionDescriptor> actions, IInlineConstraintResolver constraintResolver, bool targetIsAction) { Contract.Assert(factory != null); DirectRouteFactoryContext context = new DirectRouteFactoryContext( areaPrefix, controllerPrefix, actions, constraintResolver, targetIsAction); RouteEntry entry = factory.CreateRoute(context); if (entry == null) { throw Error.InvalidOperation( MvcResources.TypeMethodMustNotReturnNull, typeof(IDirectRouteFactory).Name, "CreateRoute"); } DirectRouteBuilder.ValidateRouteEntry(entry); return(entry); }
internal static RouteEntry CreateRouteEntry(string areaPrefix, string prefix, IDirectRouteFactory factory, IReadOnlyCollection<ActionDescriptor> actions, IInlineConstraintResolver constraintResolver, bool targetIsAction) { Contract.Assert(factory != null); DirectRouteFactoryContext context = new DirectRouteFactoryContext(areaPrefix, prefix, actions, constraintResolver, targetIsAction); RouteEntry entry = factory.CreateRoute(context); if (entry == null) { throw new InvalidOperationException(Error.Format(MvcResources.TypeMethodMustNotReturnNull, typeof(IDirectRouteFactory).Name, "CreateRoute")); } Route route = entry.Route; Contract.Assert(route != null); ActionDescriptor[] targetActions = route.GetTargetActionDescriptors(); if (targetActions == null || targetActions.Length == 0) { throw new InvalidOperationException(MvcResources.DirectRoute_MissingActionDescriptors); } if (route.RouteHandler != null) { throw new InvalidOperationException(MvcResources.DirectRoute_RouteHandlerNotSupported); } return entry; }
RouteEntry IDirectRouteFactory.CreateRoute(DirectRouteFactoryContext context) { Contract.Assert(context != null); IDirectRouteBuilder builder = context.CreateBuilder(Template); Contract.Assert(builder != null); builder.Name = Name; builder.Order = Order; return builder.Build(); }
RouteEntry IDirectRouteFactory.CreateRoute(DirectRouteFactoryContext context) { Contract.Assert(context != null); IDirectRouteBuilder builder = context.CreateBuilder(Template); Contract.Assert(builder != null); var name = Name; if (context.TargetIsAction && String.IsNullOrEmpty(name)) { var actionDescriptor = context.Actions.SingleOrDefault() as IMethodInfoActionDescriptor; if (actionDescriptor != null) { name = "MethodInfo!" + actionDescriptor.MethodInfo.MethodHandle.Value + "_" + Template; } } builder.Name = name; builder.Order = Order; return builder.Build(); }
// Internal for testing internal static RouteEntry CreateRouteEntry( string areaPrefix, string controllerPrefix, IDirectRouteFactory factory, IReadOnlyCollection<ActionDescriptor> actions, IInlineConstraintResolver constraintResolver, bool targetIsAction) { Contract.Assert(factory != null); DirectRouteFactoryContext context = new DirectRouteFactoryContext( areaPrefix, controllerPrefix, actions, constraintResolver, targetIsAction); RouteEntry entry = factory.CreateRoute(context); if (entry == null) { throw Error.InvalidOperation( MvcResources.TypeMethodMustNotReturnNull, typeof(IDirectRouteFactory).Name, "CreateRoute"); } DirectRouteBuilder.ValidateRouteEntry(entry); return entry; }