private AggregateResult <ExamplePerson> SetName(string name) { Action action = () => _name = name.Trim(); var requirements = RequirementList.Create() .AddExceptionRequirement( () => name != null, new ArgumentNullException(nameof(name))) .AddNotificationRequirement( () => name.Trim().Length > 0, nameof(Name), "A name is required.") .AddNotificationRequirement( // TODO: Remove. Here for a UI test () => name != "Jar Jar Binks", nameof(Name), "Jar Jar Binks is not wanted here!"); return(AggregateExecution .CheckRequirements(requirements) .ExecuteAction(action) .ReturnAggregateResult(this)); }
private AggregateResult <ExamplePerson> SetEmailAddress(string emailAddress) { Action action = () => _emailAddress = emailAddress.Trim(); var requirements = RequirementList.Create() .AddExceptionRequirement( () => emailAddress != null, new ArgumentNullException(nameof(emailAddress))) .AddNotificationRequirement( () => RegexUtilities.IsValidEmail(emailAddress), nameof(EmailAddress), "A valid email address is required."); return(AggregateExecution // TODO: Inject as 'AggregateService'? .CheckRequirements(requirements) .ExecuteAction(action) .ReturnAggregateResult(this)); }