public void TestPropertyBuilderValidator() { var validator = ValidatorBuilder.Builder <TestObject>() .Append("Random", new EqualityValidator <TestObject, int>(o => o.Item2, o => o.Item4, true)) .BeginGroup("Item1") .Append(o => o.Item1, NotWhitespaceString.NotNullInstance, new StringLength(i => i < 5)) .Append(new EqualityValidator <TestObject>(new TestObject(), true)) .Append(new EqualityValidator <TestObject, int>(o => o.Item2, o => o.Item4, true)) .EndGroup() .Append("Item2", o => o.Item2, new RangeValidator <int>(0, 2)) .Append("Item3", o => o.Item3, new CollectionValidator <decimal?>(new RangeValidator <decimal?>(0, 2, false))) .Append("Item4", o => o.Item4, new EqualityValidator <int>(6, true)) .Build(); var result = validator.Validate("Test", new TestObject() { Item1 = "HELLO ME", Item2 = -1, Item3 = new List <decimal?>() { 1m, 2.5m, null } }); Console.WriteLine(result); Assert.AreEqual(false, result.Valid); }