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 :

Surcharge du nombre d'arguments d'une classe


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut Surcharge du nombre d'arguments d'une classe
    Bonjour,
    J'ai actuellement un classe comportant 7 arguments.
    J'affiche cette classe dans plusieurs DatGridView. Une fois toute la classe, puis une autre la classe avec des restrictions (quantité inférieur à 10).
    Dans un troisième DataGridView je souhaite afficher cette classe avec 3 arguments supplémentaire. Ces trois arguments font appelles aux propriétés d'une classe (pour effectuer des calculs).

    Voici mon message d'erreur actuel :
    CS1501 Aucune surcharge pour la méthode 'Add' n'accepte les arguments 10
    Voici comment je programme l'initialisation de ma DataGridView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void initcommande(BindingList<Article> _artcommande)
            {
                foreach (Article item in _calcfact)
                {
                    _artcommande.Add(item.idarticle, item.reference, item.famille, item.unite, item.quantite, item.prixunitaire, item.remise,
                        Facturation.prixTVA(item.prixunitaire), Facturation.remisepourcent(item.prixunitaire, item.remise),
                        Facturation.prixachatnet(item.prixunitaire, Facturation.prixTVA(item.prixunitaire)));
                }
            }

    Ma question est donc, comment instancier/programmer une surcharge sur une classe déjà existante ?

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 666
    Points : 11 184
    Points
    11 184
    Par défaut
    Bonjour,
    Comme l'indique le message, il suffit de surcharger la méthode Add de ta classe, pour y ajouter les 3 paramètres "manquants".

    Tatayo.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    Je suis bien d'accord qu'il faut surcharger cette méthode. Mais comment le faire ?
    Je n'arrive pas à visualiser la chose en code ........

    Merci.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 666
    Points : 11 184
    Points
    11 184
    Par défaut
    Ca se fait dans le code de la classe. Par exemple ici j'ai une méthode avec deux prototypes différents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		public JULIAContext GetContext(string logLevel, QueryTrackingBehavior queryTrackingBehavior, QuerySplittingBehavior querySplittingBehavior = QuerySplittingBehavior.SingleQuery, bool detailedErrors = false, bool useLazyLoading = true, int commandTimeout = 30, bool enableSensitiveDataLogging = false)
    		{
    ...
    		}
    		public JULIAContext GetContext(ContextParameters parameters) => GetContext(parameters.LogLevel, parameters.QueryTrackingBehavior, parameters.QuerySplittingBehavior, parameters.DetailedErrors, parameters.UseLazyLoading, parameters.CommandTimeout, parameters.EnableSentitiveDataLogging);
    Tu as un tutoriel ici.

    Tatayo.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    J'ai déjà vu ce cours celui-ci ne convient pas à mon application.

    Dans ma classe article dans les constructeurs qu'est-ce que je dois ajouter ?

    L'utilisation d'un override est-elle appropriée ? Et comment l'appliquer ?

    Désolé mais je n'ai jamais travailler avec les surcharges, c'est la première fois que je les abordes.

    Voici une partie du code de ma classe Article :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    // --- --- Constructeurs
     
            public Article(string idarticle, string reference, string famille, string unite, int quantite, double prixunitaire, double remiseeuro)
            {
                _idarticle = idarticle;
                _reference = reference;
                _famille = famille;
                _unite = unite;
                _quantite = quantite;
                _prixunitaire = prixunitaire;
                _remiseeuro = remiseeuro;
            }
     
            public static double prixTVA(double prixunitaire)
            {
                double prixtva = 0;
     
                prixtva = prixunitaire * 0.2;
     
                return Math.Round(prixtva, 2);
            }
     
            public static double remisepourcent(double prixunitaire, double remise)
            {
                double pourcentrem = 0;
     
                pourcentrem = (remise * 100) / prixunitaire;
     
                return Math.Round(pourcentrem, 2);
            }
     
            public static double prixachatnet(double prixunitaire, double tva)
            {
                double prixnet = 0;
     
                prixnet = prixunitaire - tva;
     
                return prixnet;
            }
    Puis voici l'endroit qui sera surchargé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void initcommande(BindingList<Article> _artcommande)
            {
                foreach (Article item in _calcfact)
                {
                    _artcommande.Add(item.idarticle, item.reference, item.famille, item.unite, item.quantite, item.prixunitaire, item.remise,
                        Article.prixTVA(item.prixunitaire), Article.remisepourcent(item.prixunitaire, item.remise),
                        Article.prixachatnet(item.prixunitaire, Article.prixTVA(item.prixunitaire)));
                }
            }

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 978
    Points : 24 703
    Points
    24 703
    Par défaut
    une surcharge est une méthode ayant le même nom qu'une autre, mais une signature différente (signature = paramètres par leur type et leur nombre)


    si tu as une méthode void Add(string a)
    tu peux ajouter simplement une méthode en dessous void Add(string a, int b) et celle ci a un paramètre en plus que l'autre
    tu peux après utiliser celle que tu veux

    si tu n'as pas accès au code source de la classe dans laquelle tu veux rajouter une surcharge, tu ne peux pas ajouter de surcharge
    tu peux éventuellement ajouter une méthode d'extension, mais pour ca il faut t'assurer que ce que tu veux faire est faisable (setter une paire d'autres trucs)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 666
    Points : 11 184
    Points
    11 184
    Par défaut
    Ici ce n'est pas la classe Article qu'il faut modifier, car le message d'erreur porte sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _artcommande.Add()
    C'est donc cette méthode de la classe BindingList<Article> qu'il faut surcharger.

    Tatayo.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    une surcharge est une méthode ayant le même nom qu'une autre, mais une signature différente (signature = paramètres par leur type et leur nombre)


    si tu as une méthode void Add(string a)
    tu peux ajouter simplement une méthode en dessous void Add(string a, int b) et celle ci a un paramètre en plus que l'autre
    tu peux après utiliser celle que tu veux

    si tu n'as pas accès au code source de la classe dans laquelle tu veux rajouter une surcharge, tu ne peux pas ajouter de surcharge
    tu peux éventuellement ajouter une méthode d'extension, mais pour ca il faut t'assurer que ce que tu veux faire est faisable (setter une paire d'autres trucs)
    J’ai accès à ma classe source qui est “Article”. Je dois donc créer un deuxième article comportant 10 arguments ?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Ici ce n'est pas la classe Article qu'il faut modifier, car le message d'erreur porte sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _artcommande.Add()
    C'est donc cette méthode de la classe BindingList<Article> qu'il faut surcharger.

    Tatayo.
    Cela revient à faire ce que Pol63 explique ? Surcharger l’ajout ? Directement lorsque je fais l’init de ma commande ? Ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    private void initcommande(BindingList<Article> _artcommande)
            {
                foreach (Article item in _calcfact)
                {
                    _artcommande.Add(item.idarticle, item.reference, item.famille, item.unite, item.quantite,    item.prixunitaire, item.remise,
                        Article.prixTVA(item.prixunitaire), Article.remisepourcent(item.prixunitaire, item.remise),
                        Article.prixachatnet(item.prixunitaire, Article.prixTVA(item.prixunitaire)));
                }
            }
    Effectuer un deuxième _artcommande.Add() ? D’un deuxième BindingList comportant les autres arguments ? Et utilisé uniquement à cette endroit ?

    Lucas.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 666
    Points : 11 184
    Points
    11 184
    Par défaut
    Oui, il faut ajouter une syntaxe à la méthode Add de la classe BindingList pour avoir la bonne liste de paramètres.
    Mais tu n'as pas besoin de modifier l'appel de cette méthode, puisque la surcharge vise justement à régler le problème.

    Tatayo.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Bon ........... décidément je ne trouve pas de solution à mon code .......

    Merci à vous.

  12. #12
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    13 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 13 978
    Points : 24 703
    Points
    24 703
    Par défaut
    Ca doit être le constructeur de la classe article dans lequel il faut ajouter des paramètres
    enfin je ne connais pas bindinglist, mais si c'est un générateur de code qui l'a créé il faut le repasser pour qu'il voit les nouveautés
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Dans ma classe article je ne peux pas effectuer de surcharge (override, hormis si je le syntaxe mal)

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    {
        public class Article : INotifyPropertyChanged
        {
     
            // --- --- Attributs
     
            private string _idarticle;
            private string _reference;
            private string _famille;
            private string _unite;
            private int _quantite;
            private double _prixunitaire;
            private double _remiseeuro;
            public event PropertyChangedEventHandler PropertyChanged;
     
            // --- --- Proprietes
     
            public string idarticle
            {
                get { return _idarticle; }
                set
                {
                    _idarticle = value;
                    this.NotifyPropertyChanged("idarticle");
                }
            }
     
            public string reference
            {
                get { return _reference; }
                set
                {
                    _reference = value;
                    this.NotifyPropertyChanged("reference");
                }
            }
     
            public string famille
            {
                get { return _famille; }
                set
                {
                    _famille = value;
                    this.NotifyPropertyChanged("famille");
                }
            }
     
            public string unite
            {
                get { return _unite; }
                set
                {
                    _unite = value;
                    this.NotifyPropertyChanged("unite");
                }
            }
     
            public int quantite
            {
                get { return _quantite; }
                set
                {
                    _quantite = value;
                    this.NotifyPropertyChanged("quantite");
                }
            }
     
            public double prixunitaire
            {
                get { return _prixunitaire; }
                set
                {
                    _prixunitaire = value;
                    this.NotifyPropertyChanged("prixunitaire");
                }
            }
     
            public double remise
            {
                get { return _remiseeuro; }
                set
                {
                    _remiseeuro = value;
                    this.NotifyPropertyChanged("remise");
                }
            }
     
        // --- --- Constructeurs
     
            public Article(string idarticle, string reference, string famille, string unite, int quantite, double prixunitaire, double remiseeuro)
            {
                _idarticle = idarticle;
                _reference = reference;
                _famille = famille;
                _unite = unite;
                _quantite = quantite;
                _prixunitaire = prixunitaire;
                _remiseeuro = remiseeuro;
            }
     
            public static double prixTVA(double prixunitaire)
            {
                double prixtva = 0;
     
                prixtva = prixunitaire * 0.2;
     
                return Math.Round(prixtva, 2);
            }
     
            public static double remisepourcent(double prixunitaire, double remise)
            {
                double pourcentrem = 0;
     
                pourcentrem = (remise * 100) / prixunitaire;
     
                return Math.Round(pourcentrem, 2);
            }
     
            public static double prixachatnet(double prixunitaire, double tva)
            {
                double prixnet = 0;
     
                prixnet = prixunitaire - tva;
     
                return prixnet;
            }
     
        // --- --- Methodes
     
            private void NotifyPropertyChanged(string name)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(name));
                }
            }
        }
    }
    C'est donc bien la méthode _artcommande.Add que je dois surcharger pour qu'elle accepte 10 arguements.

    Citation Envoyé par Pol63 Voir le message
    Ca doit être le constructeur de la classe article dans lequel il faut ajouter des paramètres
    enfin je ne connais pas bindinglist, mais si c'est un générateur de code qui l'a créé il faut le repasser pour qu'il voit les nouveautés
    En référence au code, je ne peux pas ajouter mes paramètres au constructeur de la classe. Et non le BindingList est codé manuellement.

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 666
    Points : 11 184
    Points
    11 184
    Par défaut
    Je ne comprends pas où se trouve la difficulté.
    Il faut juste ajouter une deuxième syntaxe à la méthode Add() de la classe BindingList<T>, pour qu'elle accepte les arguments que tu veux lui passer.
    Il n'y a aucune modification à apporter à la classe Article, ni au code que tu nous as montré.

    Tatayo.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Je ne comprends pas où se trouve la difficulté.
    Il faut juste ajouter une deuxième syntaxe à la méthode Add() de la classe BindingList<T>, pour qu'elle accepte les arguments que tu veux lui passer.
    Il n'y a aucune modification à apporter à la classe Article, ni au code que tu nous as montré.

    Tatayo.
    La classe article n'accepte que 7 arguments qui sont du type suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            private string _idarticle;
            private string _reference;
            private string _famille;
            private string _unite;
            private int _quantite;
            private double _prixunitaire;
            private double _remiseeuro;
    Ce qui fait que je ne peux pas ajouter une deuxième syntaxe à la méthode _artcommande.Add(). Car ma classe article ne peut qu'accepter les arguments du type précédent !
    Je suis bien conscient que je n'ai rien à faire dans ma classe Article. Mais je suis aussi conscient que je n'ai que la possibilité de mettre les arguments définit dans la classe.

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    janvier 2009
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : janvier 2009
    Messages : 4 666
    Points : 11 184
    Points
    11 184
    Par défaut
    Je pense qu'il y a une incompréhension ici.
    Le message d'erreur porte sur ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void initcommande(BindingList<Article> _artcommande)
            {
                foreach (Article item in _calcfact)
                {
                    _artcommande.Add(item.idarticle, item.reference, item.famille, item.unite, item.quantite, item.prixunitaire, item.remise,
                        Facturation.prixTVA(item.prixunitaire), Facturation.remisepourcent(item.prixunitaire, item.remise),
                        Facturation.prixachatnet(item.prixunitaire, Facturation.prixTVA(item.prixunitaire)));
                }
            }
    Il indique que la méthode Add de la classe BindingList<Article> n'accepte pas ces paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CS1501 Aucune surcharge pour la méthode 'Add' n'accepte les arguments 10
    Tu tentes de passer 10 paramètres à la méthode Add de la classe BindingLis (via l'instance _artcommande).
    Tu as bien les valeurs en question (la liste des paramètres) que tu récupères, directement ou indirectement, de la classe Article via l'instance Item.
    La classe Article ne possède que 7 valeurs ? Tout à fait, mais dans ton code tu passes 3 autres valeurs à la méthode Add, qui ne sont pas directement issues de la classe Article, mais calculées:
    1. item.idarticle,
    2. item.reference,
    3. item.famille,
    4. item.unite,
    5. item.quantite,
    6. item.prixunitaire,
    7. item.remise,
    8. Facturation.prixTVA(item.prixunitaire),
    9. Facturation.remisepourcent(item.prixunitaire, item.remise),
    10. Facturation.prixachatnet(item.prixunitaire, Facturation.prixTVA(item.prixunitaire))


    Le message d'erreur indique clairement qu'aucune syntaxe de la méthode Add n'accepte cette liste de paramètres.

    Donc je maintiens, pour résoudre ton problème tu n'as aucune modification à apporter à la classe Article.
    Il faut ajouter une syntaxe à la méthode Add de la classe BindingList, syntaxe qui va correspondre à l'appel que tu nous montres, donc avec 10 paramètres.
    Je dirai que le prototype de la méthode serait celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void Add(string idArticle,string reference,string famille,string unite,int quantite,double prixUnitaire,double remise,double prixTVA,double remisePourcent,double prixAchatNet)
    Tatayo.

  17. #17
    Membre expert
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 1 864
    Points : 3 487
    Points
    3 487
    Par défaut
    Tatayo, il y a effectivement une incompréhension.

    BindingList<T> fait partie du Framework et il serait maladroit à mon sens de vouloir la surcharger.

    Le problème, à mon avis n'est pas sur la méthode Add en elle-même, mais sur ce qui lui a été fourni.
    Il s'agit d'une BindingList<T> créée pour de l'affichage où T est une classe Article.

    Pour moi, l'affichage doit être isolé du métier.
    Il suffit donc de créer une classe ArticleSpecialPourMaGrille réservée à l'affichage de la grille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var newArticle = new ArticleSpecialPourMaGrille(item.idarticle, item.reference, item.famille, item.unite, item.quantite, item.prixunitaire, item.remise,
                        Facturation.prixTVA(item.prixunitaire), Facturation.remisepourcent(item.prixunitaire, item.remise),
                        Facturation.prixachatnet(item.prixunitaire, Facturation.prixTVA(item.prixunitaire));
    _artcommande.Add(newArticle);
    On peux aussi envisager de remplacer les méthodes statiques par des propriétés.
    Et du coup le Binding se fera naturellement.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Votre réponse me semble correct jusqu'au moment où je me demande comment votre classe ArticleSpecialPourMaGrille récupèrera les éléments de base de l'Article ?
    Ne faudrait-il créer cet ArticleSpecialPourMaGrille directement dans la classe Article ? Pour qu'il connaisse les paramètres ?

    Merci.

  19. #19
    Membre expert
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 1 864
    Points : 3 487
    Points
    3 487
    Par défaut
    Citation Envoyé par luk0000 Voir le message
    Votre réponse me semble correct jusqu'au moment où je me demande comment votre classe ArticleSpecialPourMaGrille récupèrera les éléments de base de l'Article ?
    Ne faudrait-il créer cet ArticleSpecialPourMaGrille directement dans la classe Article ? Pour qu'il connaisse les paramètres ?

    Merci.
    Comme cela est directement visible dans le code que j'ai fourni, ces éléments sont passé via le constructeur de ArticleSpecialPourMaGrille.

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2021
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par popo Voir le message
    Comme cela est directement visible dans le code que j'ai fourni, ces éléments sont passé via le constructeur de ArticleSpecialPourMaGrille.
    Mmh je crois bien que cela n'est pas réalisable .... Vous avez essayé ? Personnelement j'ai testé dans mon contexte mais je n'ai rien eu de concluant ....... Je ressaye à tête reposé plus tard !

Discussions similaires

  1. Compter le nombre d'instance d'une classe
    Par themadmax dans le forum C#
    Réponses: 6
    Dernier message: 12/07/2008, 10h48
  2. récupérer le nombre d'arguments d'une fonction
    Par hector2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/03/2008, 12h35
  3. Réponses: 4
    Dernier message: 08/02/2008, 14h01
  4. PB de passage d'argument dasn une classe
    Par Naelhem dans le forum C++
    Réponses: 13
    Dernier message: 26/10/2006, 21h03
  5. [VB.NET] passage d'arguments d'une classe(form1) à une autre
    Par zouhib dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2006, 17h54

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