| File: Discovery\RazorComponentApplication.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; using Microsoft.AspNetCore.Components.Web; namespace Microsoft.AspNetCore.Components.Discovery; /// <summary> /// The definition of a component based application. /// </summary> [DebuggerDisplay($"{{{nameof(GetDebuggerDisplay)}(),nq}}")] internal class RazorComponentApplication { private readonly PageComponentInfo[] _pages; private readonly ComponentInfo[] _components; internal RazorComponentApplication( PageComponentInfo[] pageCollection, ComponentInfo[] componentCollection) { _pages = pageCollection; _components = componentCollection; } /// <summary> /// Gets the list of <see cref="PageComponentInfo"/> associated with the application. /// </summary> /// <returns>The list of pages.</returns> public IReadOnlyList<PageComponentInfo> Pages => _pages; /// <summary> /// Gets the list of <see cref="ComponentInfo"/> associated with the application. /// </summary> public IReadOnlyList<ComponentInfo> Components => _components; public ISet<IComponentRenderMode> GetDeclaredRenderModesByDiscoveredComponents() { var set = new HashSet<IComponentRenderMode>(); for (var i = 0; i < Components.Count; i++) { var component = Components[i]; switch (component.RenderMode) { case InteractiveServerRenderMode: set.Add(RenderMode.InteractiveServer); break; case InteractiveWebAssemblyRenderMode: set.Add(RenderMode.InteractiveWebAssembly); break; case InteractiveAutoRenderMode: set.Add(RenderMode.InteractiveServer); set.Add(RenderMode.InteractiveWebAssembly); break; default: break; } } return set; } private string GetDebuggerDisplay() { return $"Pages = {Pages.Count}, Components = {Components.Count}"; } }