using Microsoft.Extensions.DependencyInjection; using System.Collections.ObjectModel; namespace Toolkit.Foundation; public class MicroControllerBuilderConfiguration : IMicroControllerBuilderConfiguration where TConfiguration : ISerialConfiguration where TReader : SerialReader where TEvent : ISerialEventArgs { private readonly List modules = []; public Func Factory => (IServiceProvider provider) => provider.GetService()! .Create(Modules); public IReadOnlyCollection Modules => new ReadOnlyCollection(modules); public IMicroControllerBuilderConfiguration AddModule() where TModule : IMicroControllerModule, new() { modules.Add(new MicroControllerModuleDescriptor()); return this; } }