| File: Builder\RenderModeEndpointProvider.cs | Web Access |
| Project: src\aspnetcore\src\Components\Endpoints\src\Microsoft.AspNetCore.Components.Endpoints.csproj (Microsoft.AspNetCore.Components.Endpoints) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using static Microsoft.AspNetCore.Internal.LinkerFlags; namespace Microsoft.AspNetCore.Components.Endpoints.Infrastructure; /// <summary> /// A provider that can register endpoints to support a specific <see cref="IComponentRenderMode"/>. /// </summary> public abstract class RenderModeEndpointProvider { /// <summary> /// Determines whether this <see cref="RenderModeEndpointProvider"/> supports the specified <paramref name="renderMode"/>. /// </summary> /// <param name="renderMode">The <see cref="IComponentRenderMode"/>.</param> /// <returns><c>true</c> if the <see cref="IComponentRenderMode"/> is supported; <c>false</c> otherwise.</returns> public abstract bool Supports(IComponentRenderMode renderMode); /// <summary> /// Gets the endpoints for the specified <paramref name="renderMode"/>. /// </summary> /// <param name="renderMode">The <see cref="IComponentRenderMode"/>.</param> /// <param name="applicationBuilder">The <see cref="IApplicationBuilder"/> used to configure non endpoint aware endpoints.</param> /// <returns>The list of endpoints this provider is registering.</returns> public abstract IEnumerable<RouteEndpointBuilder> GetEndpointBuilders( IComponentRenderMode renderMode, IApplicationBuilder applicationBuilder); internal static void AddEndpoints( List<Endpoint> endpoints, [DynamicallyAccessedMembers(Component)] Type rootComponent, IEnumerable<RouteEndpointBuilder> renderModeEndpoints, IComponentRenderMode renderMode, List<Action<EndpointBuilder>> conventions, List<Action<EndpointBuilder>> finallyConventions) { foreach (var builder in renderModeEndpoints) { builder.Metadata.Add(new RootComponentMetadata(rootComponent)); builder.Metadata.Add(renderMode); foreach (var convention in conventions) { convention(builder); } foreach (var finallyConvention in finallyConventions) { finallyConvention(builder); } endpoints.Add(builder.Build()); } } }