Files
Toolkit2/Toolkit.Foundation/MicrocontrollerBuilderConfiguration.cs
T
Dan Clark 0afe621f59 Refactor
2025-02-09 13:51:25 +00:00

25 lines
1.1 KiB
C#

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