public async Task <User> SetEmail(string email) { if (string.IsNullOrWhiteSpace(email)) { throw new ArgumentNullException(nameof(email)); } try { new System.Net.Mail.MailAddress(email); } catch { throw new ArgumentException("Invalid email address.", nameof(email)); } if (await _domainQuery.IsEmailInUse(email)) { throw new EmailIsAlreadyInUseException(email); } Email = email; return(this); }