using Microsoft.Extensions.DependencyInjection; namespace Toolkit.Foundation; public class Component : IComponent { private readonly IComponentBuilder builder; protected Component(IComponentBuilder builder) => this.builder = builder; public static TComponent Create(IServiceProvider provider, Action builderDelegate) where TComponent : class, IComponent { IServiceFactory factory = provider.GetRequiredService(); IComponentBuilder builder = ComponentBuilder.Create(); builderDelegate(builder); return factory.Create(builder); } public IComponentBuilder Configure(string name) => Configuring(name, builder); public virtual IComponentBuilder Configuring(string name, IComponentBuilder builder) => builder; }