using System; using System.Collections.Generic; using AsbCloudApp.Data; using AsbCloudApp.Requests.ParserOptions; using AsbCloudApp.Services; namespace AsbCloudInfrastructure.Services.Parser; public class ParserServiceFactory { private readonly IDictionary> parsers; public ParserServiceFactory(IDictionary> parsers) { this.parsers = parsers; } 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), "Ошибка приведения типа"); } }