Растущий конструктор контроллера с использованием DI MVC - PullRequest
1 голос
/ 16 мая 2019

У меня есть контроллер, методы которого привязаны к кнопкам, которые выполняют разные процессы для одного набора данных, но он медленно растет. Даже метод отправки файла не всегда вызывается для каждой коллекции данных. Иногда требуется только 1 из 3, но мы хотим, чтобы у каждого формата файла была своя кнопка на клиенте.

public AController(
        ILogger logger,
        IabcRepository abcRepo,
        IFileService<FileTypeA> fileTypeAService,
        IFileService<FileTypeB> fileTypeBService,
        IFileService<FileTypeC> fileTypeCService,
        IPrintService printFileService,
        ....
        )

public ActionResult SendFileA(int id)
{
   _fileTypeAService.SendFile(id);
   _abcRepo.Update(id)
   _logger.Log("log message");
}

public ActionResult SendFileB(id)
{
   _fileTypeBService.SendFile(id);
   _abcRepo.Update(id)
   _logger.Log("log message");
}

public ActionResult SendFileC(int id)
{
   _fileTypeCService.SendFile(id);
   _abcRepo.Update(id)
   _logger.Log("log message");
}

public ActionResult PrintFileC(int id)
{
   _printFileService.PrintFile(id);
   _abcRepo.Update(id)
   _logger.Log("log message");
}

Все эти методы вызываются подряд предыдущего метода и позволяют пользователю нажимать на кнопку только в том случае, если предыдущий метод успешно работал.

Типы файлов A, B и C отформатированы по-разному, и распечатанный файл не является ни одним из этих файлов.

Нуждается ли в этом рефакторинг, и как лучше всего это сделать?

...