@using Microsoft.Extensions.Options @using Moonlight.Frontend.Configuration @using Moonlight.Frontend.Interfaces @inject IOptions Options @Chain @code { [Parameter] public RenderFragment ChildContent { get; set; } private RenderFragment Chain; protected override void OnInitialized() { Chain = ChildContent; foreach (var component in Options.Value.Components) { // Capture current values var currentChain = Chain; var currentComponent = component; Chain = builder => { builder.OpenComponent(0, currentComponent); builder.SetKey(component); builder.AddComponentParameter(1, nameof(LayoutMiddlewareBase.ChildContent), currentChain); builder.CloseComponent(); }; } } }