permet de dire que j'ai un arbre d'héritage d'interfaces:Détermination de l'interface enfant le plus proche à une classe
IParent> iChild> IGrandChild
Comment puis-je:
- Trouvez une classe qui implémente IParent
- Détermine l'ancêtre le plus proche de la classe qui est également un enfant de IParent.
Par exemple:
var myClass = FindImplementor<IParent>();
var myInterface = ClosestAncestor<IParent, myclass>();
Je ne cherche pas à créer des fonctions qui correspondent aux signatures ci-dessus. C'était juste pour clarifier.
Les descendants d'IParent ainsi que la classe d'implémentation se trouvent dans un assembly chargé dynamiquement. Je ne suis pas sûr si cela ferait une différence ou non.
C# prend en charge l'héritage multiple des interfaces. Disons qu'il y a deux intefaces héritant de IParent: IChild1 et IChild2. Que se passe-t-il si une classe implémente IChild1 et IChild2? –
L'ancien diamant d'héritage multiple. Dans mon scénario, je n'utilise pas cette fonctionnalité.Toutes mes classes implémentant plusieurs interfaces implémentent des interfaces sans ancêtre commun. –
Même s'il n'y a pas de "diamants", vous devrez toujours parcourir l'arbre d'héritage de l'interface pour trouver IParent. Les fonctions récursives viennent à l'esprit pour traverser un arbre pour trouver quelque chose. –