Исходя из моего ограниченного контекста, сразу приходят в голову некоторые мысли
Пример ниже приведен на языке Java, но вы можете перевести на c #
1), если ваш входной класс / родительский классто же самое, тогда вы могли бы иметь список валидаторов, через которые вы можете запустить свой ввод.Сами валидаторы будут проверять каждый отдельный фактор и выполнять их в порядке внедрения.Это очень похоже на шаблон стратегии.
List<Validator> validators= {ValidatorA.class,ValidatorB.class,....};
public void foo(Input input){
for(Validator validator:validators){ // or use lambda
validator.validate(input);
}
2) если в вашей валидации также много ситуаций if / else, когда вы хотели бы избежать вызова нескольких валидаций вместе, то на ум приходит шаблон.Но шаблон шаблона немного сложен для чтения / поддержки (imo), поэтому я лично предпочел бы шаблон стратегии.Но шаблонные шаблоны имеют больше смысла в некоторых сценариях.Таким образом, вы можете оценить, подходит ли он вашему варианту использования.