/// <summary> /// Constructs an instance of <see cref="ComponentState"/>. /// </summary> /// <param name="renderer">The <see cref="Renderer"/> with which the new instance should be associated.</param> /// <param name="componentId">The externally visible identifier for the <see cref="IComponent"/>. The identifier must be unique in the context of the <see cref="Renderer"/>.</param> /// <param name="component">The <see cref="IComponent"/> whose state is being tracked.</param> /// <param name="parentComponentState">The <see cref="ComponentState"/> for the parent component, or null if this is a root component.</param> public ComponentState(Renderer renderer, int componentId, IComponent component, ComponentState parentComponentState) { ComponentId = componentId; ParentComponentState = parentComponentState; Component = component ?? throw new ArgumentNullException(nameof(component)); _renderer = renderer ?? throw new ArgumentNullException(nameof(renderer)); _cascadingParameters = CascadingParameterState.FindCascadingParameters(this); CurrentRenderTree = new RenderTreeBuilder(); _renderTreeBuilderPrevious = new RenderTreeBuilder(); if (_cascadingParameters.Count != 0) { _hasCascadingParameters = true; _hasAnyCascadingParameterSubscriptions = AddCascadingParameterSubscriptions(); } }
public static void InitializingComponent(ILogger logger, ComponentState componentState, ComponentState parentComponentState) { if (logger.IsEnabled(LogLevel.Debug)) // This is almost always false, so skip the evaluations { if (parentComponentState == null) { _initializingRootComponent(logger, componentState.ComponentId, componentState.Component.GetType(), null); } else { _initializingChildComponent(logger, componentState.ComponentId, componentState.Component.GetType(), parentComponentState.ComponentId, parentComponentState.Component.GetType(), null); } } }