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

Messages postés
40
Date d'inscription
samedi 19 mars 2005
Dernière intervention
10 février 2011
- - Dernière réponse : cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
3
Merci
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#]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebmafate
Messages postés
1163
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
21 octobre 2010
18
0
Merci
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 ;))
Commenter la réponse de leprov
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
54
0
Merci
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#]
Commenter la réponse de sebmafate
Messages postés
40
Date d'inscription
samedi 19 mars 2005
Dernière intervention
10 février 2011
0
Merci
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!
Commenter la réponse de olivierbalagizi
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
58
0
Merci
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
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.