Je le schéma modèle suivant:Existe-t-il un moyen de surcharger les méthodes d'extension en C#?
public abstract class PARENTCLASS {...}
public class CHILD_A_CLASS : PARENTCLASS{...}
public static class EXTENSION{
public static METHOD(this PARENTCLASS parent){...}
public static METHOD(this CHILD_A_CLASS child) {...}
}
Quelque chose comme ci-dessus, bien sûr, il y aura plus d'enfants (et petits-enfants) des classes, mais je viens juste l'un d'eux. Le problème est, quand j'ai appelé la méthode d'extension comme suit:
PARENTCLASS cc = new CHILD_A_CLASS();
cc.METHOD();
Il exécutera la PARENT Méthode d'extension au lieu de ma prévu méthode d'extension des enfants. Quelqu'un a une idée sur la façon de mettre en œuvre cela? (Je ne considère pas mettre la méthode elle-même dans la classe et la laisser faire l'héritage parce que je veux garder la classe de modèle propre et loin de l'autre logique).
Merci. Je pense que le moulage de type serait trop coûteux pour l'exécution et aussi assez maladroit pour maintenir le code comme ceci. Je pense que je chercherais une méthode alternative pour l'implémenter. – xandy
le moulage de type est assez rapide, bien qu'il puisse effectivement être désordonné à maintenir. –
Votre proposition n'est pas polymorphe, la méthode sélectionnée n'est correcte que pour le type de référence de la compilation et non pour le type d'exécution. Pour le dire brièvement, ce n'est pas une priorité absolue - je crois que c'est une mauvaise pratique parce que cela ne fonctionnera pas tout le temps et mènera tout simplement à des incohérences et à l'apparence erronée et causera plus de problèmes. Je pense que les méthodes d'extension sont fausses car elles cachent le fait que ces méthodes ne sont pas distribuées dynamiquement. –