public override async Task Handle(EntityBeforeSaveEvent <TEntity> domainEvent, CancellationToken cancellationToken)
        {
            await this.HandleEventCore(domainEvent, cancellationToken);

            try
            {
                this.validator.Validate <ISaveEntityValidator <TEntity> >(domainEvent.Entity);
            }
            catch (Exception validationError)
            {
                domainEvent.Errors.Add(validationError);
                return;
            }
        }
 /// <summary>
 /// Core logic of handling event raised before saving entity.
 /// </summary>
 /// <param name="domainEvent">Event raised before saving entity.</param>
 /// <param name="cancellationToken">Cancellation token.</param>
 protected abstract Task HandleEventCore(EntityBeforeSaveEvent <TEntity> domainEvent, CancellationToken cancellationToken);