| File: Builder\RouteHandlerBuilder.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. namespace Microsoft.AspNetCore.Builder; /// <summary> /// Builds conventions that will be used for customization of MapAction <see cref="EndpointBuilder"/> instances. /// </summary> public sealed class RouteHandlerBuilder : IEndpointConventionBuilder { private readonly IEnumerable<IEndpointConventionBuilder>? _endpointConventionBuilders; private readonly ICollection<Action<EndpointBuilder>>? _conventions; private readonly ICollection<Action<EndpointBuilder>>? _finallyConventions; internal RouteHandlerBuilder(ICollection<Action<EndpointBuilder>> conventions, ICollection<Action<EndpointBuilder>> finallyConventions) { _conventions = conventions; _finallyConventions = finallyConventions; } /// <summary> /// Instantiates a new <see cref="RouteHandlerBuilder" /> given multiple /// <see cref="IEndpointConventionBuilder" /> instances. /// </summary> /// <param name="endpointConventionBuilders">A sequence of <see cref="IEndpointConventionBuilder" /> instances.</param> public RouteHandlerBuilder(IEnumerable<IEndpointConventionBuilder> endpointConventionBuilders) { _endpointConventionBuilders = endpointConventionBuilders; } /// <summary> /// Adds the specified convention to the builder. Conventions are used to customize <see cref="EndpointBuilder"/> instances. /// </summary> /// <param name="convention">The convention to add to the builder.</param> public void Add(Action<EndpointBuilder> convention) { if (_conventions is not null) { _conventions.Add(convention); } else { foreach (var endpointConventionBuilder in _endpointConventionBuilders!) { endpointConventionBuilder.Add(convention); } } } /// <inheritdoc /> public void Finally(Action<EndpointBuilder> finalConvention) { if (_finallyConventions is not null) { _finallyConventions.Add(finalConvention); } else { foreach (var endpointConventionBuilder in _endpointConventionBuilders!) { endpointConventionBuilder.Finally(finalConvention); } } } }