Chamando Comandos de Outro Comando Método Handle ()
Oi eu estou usando oInjetor Simples DI biblioteca e tem vindo a seguir material realmente interessante sobre um modelo de arquitetura projetado em torno do padrão de comando:
Enquanto isso ... no lado do comando da minha arquiteturaEnquanto isso ... no lado da consulta da minha arquiteturaO contêiner gerenciará a vida útil doUnitOfWork
e estou usando comandos para executar funções específicas no banco de dados.
Minha pergunta é se eu tenho um comando, por exemplo, umAddNewCustomerCommand
que, por sua vez, realiza outra chamada para outro serviço (ou seja, envia uma mensagem de texto), do ponto de vista do design, isso é aceitável ou deve ser feito em um nível mais alto e, em caso afirmativo, qual é a melhor maneira de fazer isso?
Exemplo de código está abaixo:
public class AddNewBusinessUnitHandler
: ICommandHandler<AddBusinessUnitCommand>
{
private IUnitOfWork uow;
private ICommandHandler<OtherServiceCommand> otherHandler;
AddNewBusinessUnitHandler(IUnitOfWork uow,
ICommandHandler<OtherServiceCommand> otherHandler)
{
this.uow = uow;
this.otherHandler = otherHandler;
}
public void Handle(AddBusinessUnitCommand command)
{
var businessUnit = new BusinessUnit()
{
Name = command.BusinessUnitName,
Address = command.BusinessUnitAddress
};
var otherCommand = new OtherServiceCommand()
{
welcomePostTo = command.BusinessUnitName
};
uow.BusinessUnitRepository.Add(businessUnit);
this.otherHandler.Handle(otherCommand);
}
}