public ComponentAdapterController(RazorComponentRenderer renderer, IComponent component, object rootElement, ComponentAdapterController parent = null)
 {
     Renderer    = renderer;
     Component   = component;
     RootElement = rootElement;
     Parent      = parent;
     //if (parent != null)
     //{
     //    parent.Children.Add(this);
     //}
 }
        public async Task <TRootElement> AddComponent <TRootElement>(Type componentType, Element parentElement, Action <object> parameterSetter) where TRootElement : class
        {
            ComponentAdapterController adapter = null;
            //await Dispatcher.InvokeAsync(async () =>
            //{
            var component   = InstantiateComponent(componentType);
            var componentId = AssignRootComponentId(component);

            parameterSetter?.Invoke(component);

            adapter = new ComponentAdapterController(this, component, parentElement);
            Adapters[componentId] = adapter;

            await RenderRootComponentAsync(componentId).ConfigureAwait(false);

            RootComponent = component;
            //}).ConfigureAwait(false);
            if (adapter.RootElement is BridgeComponentBase @base)
            {
                return(@base.Native as TRootElement);
            }
            return(adapter.RootElement as TRootElement);
        }