using System; using MalwareMultiScan.Backends.Backends.Implementations; using MalwareMultiScan.Shared.Data.Enums; using MalwareMultiScan.Shared.Interfaces; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace MalwareMultiScan.Scanner.Extensions { public static class ServiceCollectionExtensions { public static void AddScanningBackend(this IServiceCollection services, BackendType type) { using var provider = services.BuildServiceProvider(); var logger = provider.GetService(); services.AddSingleton(type switch { BackendType.Dummy => new DummyScanBackend(), BackendType.Defender => new WindowsDefenderScanBackend(logger), BackendType.Clamav => new ClamavScanBackend(logger), BackendType.DrWeb => new DrWebScanBackend(logger), BackendType.Kes => new KesScanBackend(logger), BackendType.Comodo => new ComodoScanBackend(logger), BackendType.Sophos => new SophosScanBackend(logger), BackendType.McAfee => new McAfeeScanBackend(logger), _ => throw new NotImplementedException() }); } } }