IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Surcharge accesseur SET


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Par défaut [C#] Surcharge accesseur SET
    Bonjour,

    Je souhaiterais savoir s'il était possible de faire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public string From
            {
                set
                {
                    base.From = new MailAddress(value);
                }
            }
     
            public MailAddress From
            {
                set { base.From = value;); }
     
            }
    Ce qui finalement reviendrais à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void SetFrom(string Mail)
            {
     
                    base.From = new MailAddress(Mail);
     
     
            }
     
            public void SetFrom(MailAddress Mail)
            {
                base.From = Mail;); 
     
            }
    Comment faire ?

    Merci !

    EDIT : Mauvais Code

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Je ne comprends rien!
    Peux-tu expliquer en français ce que tu cherches à faire stp ?

  3. #3
    Membre expérimenté Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Par défaut
    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.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    il desir fair une surcharge sur une Propriete de la meme maniere que sur une fonction ou procedure

    a savoir => 2 procedure portant le meme nom mais pas les meme parametre ou type de retour


    après avoir mis 5min (le temps de lancer VS ) je te repond non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public class Class1
        {
            private char[] _mesCaracteres;
     
            public char[] MesCaracteres
            {
                set { _mesCaracteres = value; }
            }
            public string MesCaracteres
            {
                set { _mesCaracteres = value.ToCharArray(0, value.Length); }
            }
        }
    Le type 'WpfApplication1.Class1' contient déjà une définition pour 'MesCaracteres'
    mais serieusement, se genre de question on peut y repondre soit meme, surtout que tu as deja taper le code...

    après pour le possible "ya peut etre une astuce" je dirais sans certitude que cela serais surment implementer de la meme maniere que pour les procedure



    EDIT:

    tu peut très bien "From_ByString" et "From_ByMailAdress"
    sa coute pas grand chose de plus et tu as des accesseurs

    après si tu voulais avoir la possibilitè de ne pas differencier les 2 lors d'une assignation je ne vois pas trop....regarde peut etre un cour sur les variable non type (var)

  5. #5
    Membre expérimenté Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Par défaut
    Euh... c'est justement parce que ça marche pas que je poste

    Et vu que ça me semble illogique, je me demandais pourquoi.

    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#

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    je ne connais pas trop le pourquoi du comment car il est vrai que les 2 propriètè sont differenciable....meme pour une machine

  7. #7
    Membre expérimenté Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Par défaut
    Citation Envoyé par TheBlackReverand Voir le message

    EDIT:

    tu peut très bien "From_ByString" et "From_ByMailAdress"
    sa coute pas grand chose de plus et tu as des accesseurs

    après si tu voulais avoir la possibilitè de ne pas differencier les 2 lors d'une assignation je ne vois pas trop....regarde peut etre un cour sur les variable non type (var)
    En fait, cette classe est utilisée dans pleins d'endroit de mon application Web et j'ai pas envie de tous mettre en prod juste pour ce changement

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    ok et bien alors pourquoi pas essay l'heritage?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        public class Class1
        {
            private char[] _mesCaracteres;
     
            public object MesCaracteres
            {
                set
                {
                    if (value.GetType() == typeof(string))
                        _mesCaracteres = value.ToString().ToCharArray(0, value.ToString().Length);
                    else if (value.GetType() == typeof(char[]))
                        _mesCaracteres = (char[])value;
                    else
                        throw new Exception("TYPE TRANSFERET INCORRECT\nFichier:Class1.cs\nAccesseurs MesCaracteres");
                }
            }
        }
    et sa compile!
    biensur comme tout herite de object tout peut etre transmis

  9. #9
    Membre expérimenté Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Par défaut
    Là, c'est sûr que ça marche mais c'est un peu crade
    Je prendrais cette solution en dernière extrémité

Discussions similaires

  1. C# - Propriété: accesseur SET
    Par SynApps dans le forum C#
    Réponses: 3
    Dernier message: 26/02/2013, 07h42
  2. Réponses: 6
    Dernier message: 22/06/2012, 17h09
  3. pb surcharge de << avec accesseurs d'une autre classe
    Par questiongenerator dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2010, 15h16
  4. Erreur accesseur set
    Par beni34 dans le forum C#
    Réponses: 7
    Dernier message: 20/04/2009, 14h55
  5. surcharge des operateur du conteneur set
    Par isoman dans le forum C++
    Réponses: 6
    Dernier message: 10/07/2008, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo