| File: RouteBuilder.cs | Web Access |
| Project: src\aspnetcore\src\Http\Routing\src\Microsoft.AspNetCore.Routing.csproj (Microsoft.AspNetCore.Routing) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable enable using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; namespace Microsoft.AspNetCore.Routing; /// <summary> /// Provides support for specifying routes in an application. /// </summary> public class RouteBuilder : IRouteBuilder { /// <summary> /// Constructs a new <see cref="RouteBuilder"/> instance given an <paramref name="applicationBuilder"/>. /// </summary> /// <param name="applicationBuilder">An <see cref="IApplicationBuilder"/> instance.</param> public RouteBuilder(IApplicationBuilder applicationBuilder) : this(applicationBuilder, defaultHandler: null) { } /// <summary> /// Constructs a new <see cref="RouteBuilder"/> instance given an <paramref name="applicationBuilder"/> /// and <paramref name="defaultHandler"/>. /// </summary> /// <param name="applicationBuilder">An <see cref="IApplicationBuilder"/> instance.</param> /// <param name="defaultHandler">The default <see cref="IRouter"/> used if a new route is added without a handler.</param> public RouteBuilder(IApplicationBuilder applicationBuilder, IRouter? defaultHandler) { ArgumentNullException.ThrowIfNull(applicationBuilder); if (applicationBuilder.ApplicationServices.GetService(typeof(RoutingMarkerService)) == null) { throw new InvalidOperationException(Resources.FormatUnableToFindServices( nameof(IServiceCollection), nameof(RoutingServiceCollectionExtensions.AddRouting), "ConfigureServices(...)")); } ApplicationBuilder = applicationBuilder; DefaultHandler = defaultHandler; ServiceProvider = applicationBuilder.ApplicationServices; Routes = new List<IRouter>(); } /// <inheritdoc /> public IApplicationBuilder ApplicationBuilder { get; } /// <inheritdoc /> public IRouter? DefaultHandler { get; set; } /// <inheritdoc /> public IServiceProvider ServiceProvider { get; } /// <inheritdoc /> public IList<IRouter> Routes { get; } /// <inheritdoc /> public IRouter Build() { var routeCollection = new RouteCollection(); foreach (var route in Routes) { routeCollection.Add(route); } return routeCollection; } }