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

Signaler
Messages postés
40
Date d'inscription
samedi 19 mars 2005
Statut
Membre
Dernière intervention
10 février 2011
-
cs_Bidou
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
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

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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#]
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
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 ;))
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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#]
Messages postés
40
Date d'inscription
samedi 19 mars 2005
Statut
Membre
Dernière intervention
10 février 2011

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!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
44
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