public void ExecuteCommands(IEnumerable<ICommand> commands)
{
var arrayCommands = commands.ToArraySafe();
var validationResults = ValidateCommands(arrayCommands).ToArraySafe();
if (validationResults.Any())
{
throw new CommandValidationException(validationResults);
}
foreach (var command in arrayCommands)
{
var handlers = dispatcher.GetHandlers(command);
foreach (var handler in handlers)
{
var executorInfo = GetExecutorInfo(command, handler);
executorInfo.ExecuteHandler(handler, command);
}
}
}