using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; namespace TheXamlGuy.Framework.Serial; public static class IHostBuilderExtensions { public static IHostBuilder ConfigureSerial(this IHostBuilder hostBuilder, Action configureDelegate) where TSerialReader : SerialReader where TConfiguration : ISerialConfiguration, new() { hostBuilder.ConfigureServices((hostBuilderContext, serviceCollection) => { configureDelegate.Invoke(hostBuilderContext); serviceCollection.TryAddSingleton(); serviceCollection.AddSingleton(provider => provider.GetService()!.Create(provider.GetService>()!.CurrentValue)); }); return hostBuilder; } }