Validation rules with support for immediate termination of processing
You shouldn't bind the implementation to any particular type in this case the StopProcessingIfInvalidCheckpoint.

I think it would be better to drop this class and instead add a new property IsFinal to the interface. You could check if the validation fails and IsFinal is set to true then you stop processing other rules.

If you want to get rid of the generic argument but at same time you want to keep it for other implementations then add another abstraction layer. Make the interface non-generic and add an abstract class that is derived from the non-generic interface:

interface IValidationRule
{
    ValidationRuleResult Validate(object instance);
    bool IsFinal { get; }
}

abstract class ValidationRule&lt;T&gt; : IValidationRule
{
    public abstract ValidationRuleResult Validate(object instance);
    public bool IsFinal { get; set; }
}

class FooValidationRule : ValidationRule&lt;int&gt;
{
    public override ValidationRuleResult Validate(object instance)
    {
        ... do something with (T)instance;
    }
}


and

foreach (var vr in validationRules)
{
    var result = vr.Validate(instance);
    if (!result.IsValid &amp;&amp; vr.IsFinal)
    {
        break;
    }
    validationResults.AddRange(result.ValidationResults);
}


so

Rules =
{
    RuleOne(),
    RuleTwo() { IsFinal = true },        
    RuleThree()
}