using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; namespace MeetingAssistant.Transcription; public abstract class SpeechRecognitionPipelineBuilder { private readonly IServiceProvider services; protected SpeechRecognitionPipelineBuilder(IServiceProvider services) { this.services = services; } protected T CreateProfiled(MeetingAssistantOptions options) { return ActivatorUtilities.CreateInstance(services, Options.Create(options)); } protected T GetRequiredService() where T : notnull { return services.GetRequiredService(); } }