using Microsoft.Extensions.DependencyInjection; using MultiTerm.Protocols.Factories; using MultiTerm.Protocols.Serial; using MultiTerm.Protocols.Udp; using MultiTerm.Protocols.UsbHid; namespace MultiTerm.Protocols.Helpers; public static class ServiceExtensions { /// /// Service Extension to add all implementations of to Dependency Injection. /// Also adds to Dependency injection, which allows instanciation of /// and during runtime. /// /// existing services collection public static void AddCommunicationProtocolFactory(this IServiceCollection services) { // add all protocol implementations to the services collection services.AddTransient(); services.AddTransient(); services.AddTransient(); // TODO extend // add all settings view model implementations to the services collection services.AddTransient(); services.AddTransient(); services.AddTransient(); // TODO extend // add a function to the services collection, which is used by the CommunicationProtocolFactory // to get a list of all registered implementations of ICommunicationProtocol services.AddSingleton>>(x => () => x.GetService>()!); // to get a list of all registered implementations of IProtocolSettingsViewModel services.AddSingleton>>(x => () => x.GetService>()!); // add the factory itself to the services collection services.AddSingleton(); } }