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 :

Param de fonct.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Par défaut Param de fonct.
    Bonjour.
    Dans mon application, je fais appel à 4 webservices différents mais qui contiennent tous un même groupe de propriétés (les propriétés génériques). Celles-ci n'existent hélas pas dans une classe parente.
    - JKL.wsAnalogIn.AnalInIOConfigs_DataGridView.rowRecord_AnalIn
    - JKL.wsAnalogOut.AnalOutIOConfigs_DataGridView.rowRecord_AnalOut
    - JKL.wsDigitalIn.DigitInIOConfigs_DataGridView.rowRecord_DigitIn
    - JKL.wsDigitalOut.DigitOutIOConfigs_DataGridView.rowRecord_DigitOut
    J'ai une fonction de test commune:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            // Load the row cells values of a record into the appropriated cells of the DataGridView.
            private void loadRecordCells_CellsRowDGV(DataGridViewCellEventArgs argums, string nameColumnEtiquette, ???)
            {
                if (!string.IsNullOrEmpty(rec_AnalIn.Name))
                    this.Rows[argums.RowIndex].Cells[nameColumnEtiquette].Value = ???.Name;
     
                this.Rows[argums.RowIndex].Cells["Enabled"].Value = ???.Enable;
     
                this.Rows[argums.RowIndex].Cells["DataBase ID"].Value = ???.dbID.ToString();
            }
    Dans cette fonction, ??? est par exemple la propriété 'rec_AnalIn' (4) et devrait être passée sous forme d'un paramètre supplémentaire, mais comme les 3 dernières des 4 composantes de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JKL.wsAnalogIn.AnalInIOConfigs_DataGridView.rowRecord_AnalIn
    sont spécifiques sur 3 niveaux hiérarchiques, je me demande quel est le type de l'argument que je pourrais spécifier. Si j'emploie 'Object', il me faudra 'caster' et donc reconnaître à l'intérieur de la fonction générique lequel des 4 types est d'application, au cas par cas, ce qui nest pas possible.
    Comment faire ?

    L'un des quatre appels de cette fonction serait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Generic
                        loadRecordCells_CellsRowDGV(args, "Analog In", ???);
    Quelqu'un peut-il me conseiller ?
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Pourquoi ne pas définir:
    - une classe G qui définisse les propriétés génériques dont tu as besoin,
    - pour chaque Web service, definir une classe avec un double héritage sur le Web service et sur G.

    Cela permettrait de simuler les propriétés qui "n'existent hélas pas dans une classe parente".

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 263
    Par défaut
    Citation Envoyé par Graffito Voir le message
    ..., definir une classe avec un double héritage sur le Web service et sur G.
    Merci Graffito, mais C# ne permet pas les héritages multiples.

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    C'est vrai pas d'héritage multiple mais pour ma part j'ai l'habitude de contourner ceci via l'utilisation d'interfaces.

    Ton interface déclarera les propriétés génériques et comme dit Graffito
    - pour chaque Web service, definir une classe avec un double "héritage" sur le Web service et
    sur ton interface.

    Tu pourras donc faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            // Load the row cells values of a record into the appropriated cells of the DataGridView.
            private void loadRecordCells_CellsRowDGV(DataGridViewCellEventArgs argums, string nameColumnEtiquette, ITonInterface prop)
            {
                if (!string.IsNullOrEmpty(rec_AnalIn.Name))
                    this.Rows[argums.RowIndex].Cells[nameColumnEtiquette].Value = prop.Name;
     
                this.Rows[argums.RowIndex].Cells["Enabled"].Value = prop.Enable;
     
                this.Rows[argums.RowIndex].Cells["DataBase ID"].Value = prop.dbID.ToString();
            }

Discussions similaires

  1. udf, param,DataType Unknown
    Par TROMPAT dans le forum InterBase
    Réponses: 4
    Dernier message: 27/10/2003, 12h54
  2. Recuperation du source d'une page - envoi de param
    Par ulysse66x dans le forum Web & réseau
    Réponses: 3
    Dernier message: 15/06/2003, 17h31
  3. Ouvrir fenêtre avec param
    Par Saber22 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/05/2003, 15h48
  4. [PostgreSQL] Fonct. anormal de postmaster sous Cygwin
    Par moipastoi dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/03/2003, 13h13
  5. {$PARAM} dans XMLGRAM
    Par rgarnier dans le forum XMLRAD
    Réponses: 3
    Dernier message: 31/01/2003, 12h42

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