| File: Discovery\ComponentInfo.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> /// Metadata captured for a component during discovery. /// </summary> [DebuggerDisplay($"{{{nameof(GetDebuggerDisplay)}(),nq}}")] internal class ComponentInfo { private IComponentRenderMode? _renderMode; /// <summary> /// Initializes a new instance of <see cref="ComponentInfo"/>. /// </summary> /// <param name="componentType">The component <see cref="Type"/>.</param> public ComponentInfo(Type componentType) { ArgumentNullException.ThrowIfNull(componentType); ComponentType = componentType; } /// <summary> /// Gets the component <see cref="Type"/>. /// </summary> public Type ComponentType { get; } /// <summary> /// Gets the component <see cref="IComponentRenderMode"/>. /// </summary> public IComponentRenderMode? RenderMode { get => _renderMode; init { ArgumentNullException.ThrowIfNull(value, nameof(value)); _renderMode = value; } } private string GetDebuggerDisplay() { var renderMode = GetRenderMode(); return $"Type = {ComponentType.FullName}, {renderMode}"; } private string GetRenderMode() { if (RenderMode is InteractiveServerRenderMode { Prerender: var server }) { var size = (nameof(InteractiveServerRenderMode).Length - "RenderModeComparer".Length); return $"RenderModeComparer = {nameof(InteractiveServerRenderMode)[0..size]}, Prerendered = {server}"; } if (RenderMode is InteractiveWebAssemblyRenderMode { Prerender: var wasm }) { var size = (nameof(InteractiveWebAssemblyRenderMode).Length - "RenderModeComparer".Length); return $"RenderModeComparer = {nameof(InteractiveWebAssemblyRenderMode)[0..size]}, Prerendered = {wasm}"; } if (RenderMode is InteractiveAutoRenderMode { Prerender: var auto }) { var size = (nameof(InteractiveAutoRenderMode).Length - "RenderModeComparer".Length); return $"RenderModeComparer = {nameof(InteractiveAutoRenderMode)[0..size]}, Prerendered = {auto}"; } return "RenderModeComparer = Unknown, Prerendered = Unknown"; } }