using System; using System.Collections.Generic; using AsbCloudApp.Data; using AsbCloudApp.Requests.ParserOptions; using AsbCloudApp.Services; using AsbCloudInfrastructure.Services.Trajectory.Parser; namespace AsbCloudInfrastructure.Services; public class ParserServiceFactory { public const int IdTrajectoryFactManualParserService = 1; public const int IdTrajectoryPlanParserService = 2; private readonly IDictionary> parsers; public ParserServiceFactory(IServiceProvider serviceProvider) { parsers = new Dictionary> { { IdTrajectoryPlanParserService, () => new TrajectoryPlanParserService(serviceProvider) }, { IdTrajectoryFactManualParserService, () => new TrajectoryFactManualParserService(serviceProvider) } }; } public IParserService Create(int idParserService) where TDto : class, IId where TOptions : IParserOptionsRequest { if (!parsers.TryGetValue(idParserService, out var parserService)) throw new ArgumentNullException(nameof(idParserService), "Не правильный идентификатор парсера"); return parserService.Invoke() as IParserService ?? throw new ArgumentNullException(nameof(idParserService), "Ошибка приведения типа"); } }