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();
}
}