Modifier le nom d'une propriété héritée d'une classe mère

Résolu
olivierbalagizi Messages postés 40 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 10 février 2011 - 19 sept. 2006 à 14:28
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 19 sept. 2006 à 17:35
Bonjour chers Csharpiens.
Je ne sais pas s'il ya un moyen de modifier, dans une classe fille, le nom d'une propriété hérité d'une classe mère dans C#.net (2005).  Au fait j'ai une classe Frais qui contient des propriétés entre autre CodeEmploye et Montant. Je veux que la classe fille FraisMedicaux qui hérite de la classe mère Frais possède les propriétés MontantHopital et MontantPharmacie. Alors, pour une certaine raison, j'aimerai transformer le nom de la propriété Montant en MontantHopital mais dans la classe fille. Est-ce que cela est possible?
2ème question:
Peut-on rendre la propriété Montant invisible dans la classe fille FraisMedicaux alors qu'elle est public dans la classe mère Frais?

Merci d'avance pour vos réponses.

5 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
19 sept. 2006 à 14:46
c'est possible par détournement.

en gros, tu fais :

public decimal MontantPharmacie {
    get {return base.Montant;}
    set {base.Montant = value;}
}

et maintenant on masque l'ancienne propriété :
[EditorBrowsable(EditorBrowsableState.Never)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public new decimal Montant {
    get {return Decimal.Zero;}
}

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
19 sept. 2006 à 15:00
et en faisant?

private new decimal montant
{
get
{return base.Montant;}
set
{base.Montant = value;}
}

public decimal MontantPharmacie {
get {return montant;}
set {montant = value;}
}

en C++ ce genre de syntaxe fonctionne (override un membre public de la classe mère en membre privé dans la classe fille), mais en C#? (je propose sans savoir si ca fonctionne, ca meclairera aussi au passage dans ce cas ;))
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
19 sept. 2006 à 15:05
ca fonctionne aussi...

Par contre, je ne vois pas l'intérêt de "changer" le nom d'une propriété dans une classe fille...
normalement, dans le concept objet, toutes les classes dérivant d'une classe mère doivent avoir au minimum les mêmes membres que la classe mère. Hors là... ce n'est plus vrai.

Si le but est de changer le nom dans le PropertyGrid, je te conseille plutot l'utilisation de l'attribut DisplayName.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
olivierbalagizi Messages postés 40 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 10 février 2011
19 sept. 2006 à 15:33
Merci  Leprov pour la réponse mais le problème avec celle-ci c'est que la propriété Montant reste toujours visible alors que jou voulais qu'elle ne le soit pas!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
19 sept. 2006 à 17:35
La remarque de sebmafate est très correcte: en langage orienté object, ça n'a pas vraiment de sens de modifer le nom d'une méthode fille, le concept voulant qu'une class fille reprenne les membres de la class mère...

VC# forever
0
Rejoignez-nous