protected abstract void SendMailInternal(MailRequest mailRequest);
protected abstract Task SendMailAsyncInternal(MailRequest mailRequest);
public virtual async Task SendMailAsync(MailRequest mailRequest) { Validate(mailRequest); await SendMailAsyncInternal(mailRequest); }
private void Validate(MailRequest mailRequest) { var mailRequestValidator = new MailRequestValidator(mailRequest); mailRequestValidator.Validate(); }
public virtual void SendMail(MailRequest mailRequest) { Validate(mailRequest); SendMailInternal(mailRequest); }