Surcharge accesseur SET [C#] - C#/.NET managed - Programmation
Marsh Posté le 30-03-2009 à 17:02:56
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.
Marsh Posté le 30-03-2009 à 17:13:29
masklinn a écrit : |
Marsh Posté le 30-03-2009 à 17:27:58
pourquoi surcharger string From si il fait la meme chose que la classe mère?
Marsh Posté le 30-03-2009 à 17:38:41
ov3rflow a écrit : pourquoi surcharger string From si il fait la meme chose que la classe mère? |
Pour pas avoir à le wrapper manuellement
Marsh Posté le 30-03-2009 à 20:49:21
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.
Marsh Posté le 30-03-2009 à 20:50:21
moi23372 a écrit : JAVA gère cela différemment oui |
Java ne gère pas du tout le cas
Marsh Posté le 30-03-2009 à 21:01:59
masklinn a écrit : |
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.
Marsh Posté le 30-03-2009 à 21:04:40
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
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 |
Marsh Posté le 30-03-2009 à 16:29:40
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.
Ce qui finalement reviendrait à ça :
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