public static ICompositeValidation <T> MustForEach <T, TMember>(this ICompositeValidation <T> thisValidation,
                                                                 string groupName,
                                                                 Func <T, IEnumerable <TMember> > member,
                                                                 Func <TMember, bool> rule,
                                                                 string formatMessage = "{0} is not valid",
                                                                 int severity         = 1)
 {
     thisValidation.AddForEach(new MustValidation <TMember>(groupName, rule), member);
     return(thisValidation);
 }
 public static ICompositeValidation <T> RegExForEach <T>(this ICompositeValidation <T> thisValidation,
                                                         string groupName,
                                                         Func <T, IEnumerable <string> > member,
                                                         string pattern,
                                                         string formatMessage = "{0} is not valid",
                                                         int severity         = 1)
 {
     thisValidation.AddForEach(new RegExValidation(groupName, pattern, default(string), formatMessage, severity), member);
     return(thisValidation);
 }
 public static ICompositeValidation <T> MinimumLengthForEach <T>(this ICompositeValidation <T> thisValidation,
                                                                 string groupName,
                                                                 Func <T, IEnumerable <string> > member,
                                                                 int minimumLength,
                                                                 string formatMessage = "{0} requires at least {1} characters",
                                                                 int severity         = 1)
 {
     thisValidation.AddForEach(new StringMinimumLengthValidation(groupName, minimumLength, default(string), formatMessage, severity), member);
     return(thisValidation);
 }
        public static ICompositeValidation <T> MaximumLengthForEach <T>(this ICompositeValidation <T> thisValidation,
                                                                        string groupName,
                                                                        Func <T, IEnumerable <string> > member,
                                                                        int maximumLength,
                                                                        string formatMessage = "{0} the characters length limit is {1}",

                                                                        int severity = 1)
        {
            thisValidation.AddForEach(new StringMaximumLengthValidation(groupName, maximumLength, default(string), formatMessage, severity), member);
            return(thisValidation);
        }