Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2504 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Surcharge accesseur SET

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Surcharge accesseur SET

n°1867496
Profil sup​primé
Posté le 30-03-2009 à 16:29:40  answer
 

Bonjour,
 
Je souhaites effectuer la surcharge de mon accesseur SET.
 
En gros, si un string est passé en paramètre, j'effectue une certaine action ( ici, je créé une nouvelle instance de la classe MailAdress puis je l'assigne) ou si c'est une instance de MailAdress, je l'assigne directement.
 
De la surcharge de méthode classique quoi.
 
Le problème, c'est que le code n°1 me lance une erreur de compilation (Erreur 2 Le type 'CoreNet.Common.WebElement.MailStyle' contient déjà une définition pour 'From') et le code n°2 se compile bien ce qui est normal.
 
 

Code :
  1. public string From
  2.         {
  3.             set
  4.             {
  5.                 base.From = new MailAddress(value);
  6.             }
  7.         }
  8.         public MailAddress From
  9.         {
  10.             set { base.From = value;); }
  11.         }


 
Ce qui finalement reviendrait à ça :
 

Code :
  1. public void SetFrom(string Mail)
  2.         {
  3.          
  4.                 base.From = new MailAddress(Mail);
  5.          
  6.         }
  7.         public void SetFrom(MailAddress Mail)
  8.         {
  9.             base.From = Mail;);
  10.         }


 
C# à implémenter cette syntaxe pour remplacer les méthodes SetXXXX de Java, JAVA qui permet donc la surcharge du SET d'une propriété, je ne comprend pas pourquoi ce ne serait pas possible en C#
 
Comment faire ?
 
Merci les rois du code :o

mood
Publicité
Posté le 30-03-2009 à 16:29:40  profilanswer
 

n°1867547
masklinn
í dag viðrar vel til loftárása
Posté le 30-03-2009 à 17:02:56  profilanswer
 


C'est pas possible parce que c'est 1. stupide et 2. pas le use case. Une property, c'est une property, c'est équivalent à une variable membre avec potentiellement de la logique applicative derrière. Si tu veux surcharger des méthodes tu utilises des méthodes.

Message cité 1 fois
Message édité par masklinn le 30-03-2009 à 17:04:14

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1867552
Profil sup​primé
Posté le 30-03-2009 à 17:13:29  answer
 

masklinn a écrit :


C'est pas possible parce que c'est 1. stupide et 2. pas le use case. Une property, c'est une property, c'est équivalent à une variable membre avec potentiellement de la logique applicative derrière. Si tu veux surcharger des méthodes tu utilises des méthodes.


 
 [:cosmoschtroumpf]

n°1867559
ov3rflow
Overrage
Posté le 30-03-2009 à 17:27:58  profilanswer
 

pourquoi surcharger  string From si il fait la meme chose que la classe mère?

Message cité 1 fois
Message édité par ov3rflow le 30-03-2009 à 17:29:49
n°1867576
masklinn
í dag viðrar vel til loftárása
Posté le 30-03-2009 à 17:38:41  profilanswer
 

ov3rflow a écrit :

pourquoi surcharger  string From si il fait la meme chose que la classe mère?


Pour pas avoir à le wrapper manuellement


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1867652
moi23372
Posté le 30-03-2009 à 20:49:21  profilanswer
 

quand je vois les spec de .NET 3.5 et bientôt de 4.0, ça n'a effectivement aucun intéret de vouloir surcharger le type d'une propriété.  
A proscrire donc. JAVA gère cela différemment oui, ce qui est un avantage dans ce cas la, mais est un gros inconvénient en terme de lisibilité de code.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1867654
masklinn
í dag viðrar vel til loftárása
Posté le 30-03-2009 à 20:50:21  profilanswer
 

moi23372 a écrit :

JAVA gère cela différemment oui


Java ne gère pas du tout le cas :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1867661
moi23372
Posté le 30-03-2009 à 21:01:59  profilanswer
 

masklinn a écrit :


Java ne gère pas du tout le cas :o


 
Il permet de surcharger les méthodes, pas d'en modifier le type de retour. Comme dans tout langage, pour surcharger une méthode, il faut que les types en entrée soit différent.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1867662
masklinn
í dag viðrar vel til loftárása
Posté le 30-03-2009 à 21:04:40  profilanswer
 

moi23372 a écrit :

Il permet de surcharger les méthodes, pas d'en modifier le type de retour.


Oui mais il n'a pas de propriétés, donc pas de surcharge de propriétés [:classe++]

moi23372 a écrit :

Comme dans tout langage, pour surcharger une méthode, il faut que les types en entrée soit différent.


Oui et non, Haskell permet de surcharger sur le retour d'une fonction d'une typeclass. Exemple: read :: Read a => String -> a

Prelude> let v = read "42" :: Int
Prelude> :t v
v :: Int
Prelude> let w = read "42" :: Float
Prelude> : t w
w :: Float
Prelude> let x = read "42" :: Data.Word.Word8
Prelude> :t x
x :: GHC.Word.Word8
Prelude> let y = read "(42, 42)" :: (Int, Data.Word.Word)
Prelude> :t y
y :: (Int, GHC.Word.Word)


Message édité par masklinn le 30-03-2009 à 21:16:37

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Surcharge accesseur SET

 

Sujets relatifs
Anonce pour programmer en C [DEBUTANT]Interfacage C/Fortran sous VB .Net
[Résolu]Compiler pour obtenir un .obj (C/Delphi)Sockets asynchrones en C sous Windows
Fonction C times en Ada.[Débutant] Arret d'une boucle en C++
[AIDE SVP] Lancer projet C++ sur autre un ordinateur sans VS 2008[résolu][C] Strlen - erreur de segmentation
[Visual C#] Problème projet après changement de PCC, execution de sous programme [TERMINE]
Plus de sujets relatifs à : [C#] Surcharge accesseur SET


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR