// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNetCore.Blazor.Rendering; using Microsoft.AspNetCore.Blazor.RenderTree; using System; namespace Microsoft.AspNetCore.Blazor.Components { /// /// Allows a component to notify the renderer that it should be rendered. /// public readonly struct RenderHandle { private readonly Renderer _renderer; private readonly int _componentId; internal RenderHandle(Renderer renderer, int componentId) { _renderer = renderer ?? throw new System.ArgumentNullException(nameof(renderer)); _componentId = componentId; } /// /// Gets a value that indicates whether the has been /// initialised and is ready to use. /// public bool IsInitialized => _renderer != null; /// /// Notifies the renderer that the component should be rendered. /// /// The content that should be rendered. public void Render(RenderFragment renderFragment) { if (_renderer == null) { throw new InvalidOperationException("The render handle is not yet assigned."); } _renderer.AddToRenderQueue(_componentId, renderFragment); } } }