using System; using System.Collections.Generic; using AsbCloudApp.Data; using AsbCloudApp.Requests.Import; 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 = new Dictionary> { { IdTrajectoryPlanParserService, () => new TrajectoryPlanParserService() }, { IdTrajectoryFactManualParserService, () => new TrajectoryFactManualParserService() } }; public IParserService Create(int idImportService) where TDto : class, IId where TOptions : ParserOptionsRequestBase { var parser = parsers[idImportService].Invoke(); return parser as IParserService ?? throw new ArgumentNullException(nameof(idImportService), "Не удалось распознать файл"); } }