Bonjour.

Je tourne en rond depuis avant-hier face à un probleme de conception.

Voila je dois faire un jeu de classes ayant certains comportements identiques.
Je veux m'assurer que le developpeur respecte certaines regles.

Les interfaces c'est bien, mais ca ne force que la signature, pas ce que ca doit faire. Et l'autre probleme c'est que ces classes heritent deja d'une classe abstraite qui n'a rien à voir avec ce que je veux imposer au developpeur.

Voici un diagramme que j'ai fais pour etre plus parlant :


Je veux forcer les developpeurs qui implementeraient une classe Pomme Poire ou que sais je, a :
1) que cette classe soit composée d'un ProductLinkValidator<T> static
2) que la methode de l'interface CanLink appelle la methode CanLink du ProductLinkValidator.

Biensur j'ai limité au max le diagramme pour ne pas vous embrouiller. Mais je peux vous préciser que AProduct et LinkValidator<T> imposent deja des comportements, et limitent pas mal de code en double.

pour la Contraite 1) j'ai créé un attribut qui déclenche de la reflexion au runtime.
Pour la contrainte 2) je bloque totalement, notament du fait de la classe générique qui me rend totalement dépendant de T

Quel est votre avis sur le sujet, vos retours m'aideront vraiment. Un tres grand merci d'avance.