Пример #1
0
        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));
        }
Пример #2
0
        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));
        }