using System; using System.Collections.Generic; using System.Linq; public class Test { public static Func MinimumLength(int _minLength) { return (password) => password != null && password.Length >= _minLength; } public static bool MustHaveDigits(string password) { if (password == null) return false; return password.ToCharArray().Any(c => char.IsDigit(c)); } public static bool MustHaveUppercase(string password) { if (password == null) return false; return password.ToCharArray().Any(c => char.IsUpper(c)); } public static void Main() { Func>, Func> createPasswordPolicy = (policy) => (pw) => policy.All(check => check(pw)); var isValidShort = createPasswordPolicy(new List>() { Test.MinimumLength(8), Test.MustHaveDigits, Test.MustHaveUppercase, }); var isValidLong = createPasswordPolicy(new List>() { Test.MinimumLength(10), Test.MustHaveDigits, Test.MustHaveUppercase, }); System.Console.WriteLine(isValidShort("Password1")); // True System.Console.WriteLine(isValidShort("Password123")); // True System.Console.WriteLine(isValidShort(null)); // False System.Console.WriteLine(isValidShort("")); // False System.Console.WriteLine(isValidLong("Password123")); // True System.Console.WriteLine(isValidLong("Password1")); // False System.Console.WriteLine(isValidLong(null)); // False System.Console.WriteLine(isValidLong("")); // False } }