I'd love for it to be possible to have a conditional When expression IsValidSoFar and/or a DependsOn builder so I could do things like:
RuleFor(x => x.ValidatableProperty, "Present").NotNull().NotEmpty();
RuleFor(x => x.ValidatableProperty, "Length").Length(5, 10).When(item => item.IsValidSoFar); // will only run if the rules defined on this property previously are valid
RuleFor(x => x.SomeOtherValidatableProperty).SetValidator(new SomeComplexValidator()).DependsOn(x.ValidatableProperty); // will only run if the given property is valid - should be chainable because a rule might depend on more than one property
RuleFor(x => x.Foo).SetValidator(new FooValidator()).DependsOnNamedRules("Present", "Length"); // will only run if the given list of named rules are passing.
I have an app that is multi-tenant, and I'm validating that requests made to it are valid. The first thing that has to be valid is the tenant property on every request - the other rules then depend on that property to figure out which values they should evaluate against. If tenant is invalid, I want to only run basic rules (as opposed to ones that have a dependency on tenant being valid).