Bon déjà j'ai pensé a ce code, suivant ce que tu m'a demandé, et plutôt rapidement, il faut s'en inspirer, mais ne le prend pas "tel quel".

Je peux te proposer deux solution qui me viennent rapidement à l'esprit,
- refactoriser pour avoir une collection d'attribut.
- encapsuler tout cela dans un ValidatorClassManager qui gérerais une collection de validateur pour une classe donné.

Ensuite, j'ai envie de te dire le code étant généré, et ne manipulant que des abstraction grâce à l'IOC, ne te fait pas mal en tête si ton design de classes n'est pas au top, réfléchit surtout à quelque chose qui fait bien le boulot, ensuite tu pourra peaufiner.

Là ou cela deviendrais un problème c'est le jour ou quelqu'un s'amuse à instancier tout cela à la main, mais ce n'est pas le but. Tu ne manipule que des abstractions de quelque chose, c'est à ce niveau qu'il faut être propre et penser à un joli Framework qui engloberais tout tes besoins, pour moi toute la plomberie en dessous est de la technique.