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 :

Liaison tardive en C#


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Par défaut Liaison tardive en C#
    Bonjour,

    Je souhaiterais faire une liaison tardive en C#, avec par exemple une classe de test et une classe de production et suivant le contexte affecter dynamiquement la classe appropriée à un object pour ensuite appeler les méthodes.

    Pouvez vous m'indiquer la syntaxe à utiliser pour écrire ce code .

    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
     
    // mon test qui ne compile pas
    MonWSProd oWS1 = new MonWSProd ();
    MonWSTest oWS2 = new MonWSTest ();
    object oWSX = null;
     
    if(bProd) {
        oWSX = (MonWSProd) oWS1;
    } else {
        oWSX = (MonWSTest ) oWS2;
    }
     
    oWSX.Methode1();
    oWSX.Methode2();
    oWSX.Methode3();
    D'avance, merci pour vos réponses...

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    oWSX est un object et un object ne possède pas de Methode1(), Methode2(), Methode3().

    Pour faire ça, il faut créer une interface qu'implémente MonWSProd et MonWSTest et que oWSX soit du type de l'interface et non un object (ou un object mais avec un cast explicite, mauvais pour les performances).

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Par défaut
    Bonjour

    Déja ton code ça va pas marcher, pour la raison que oWSX est un objet et il a pas les méthodes : Methode1,Methode2 et Methode3

    kaidan a raison, il faut pour ça créer une interface qui contient les méthodes qui auront des comportements différentes selon l'état de l'objet. Par exemple :

    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
    public interface IMethodes{
    void methode1();
    void methode2();
    void methode3();
    }
     
    public class MonWsProd : IMethodes {
     
    void methode1(){
     
    //traitment dans le cas d'une production.
    }
     
    //autres méthodes de l'interface
     
    }
     
    public class MonWsTest : IMethodes {
     
    void methode1(){
     
    //traitment dans le cas des tests.
    }
     
    //autres méthodes de l'interface
     
    }
    et donc t'aura maintenant ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    IMethodes oWSX;
     
    if (bprod){
     
    oWSX = new MonWsProd();
     
    }else{
     
    oWSX = new MonWsTest();
     
    }
     
     oWSX.Methode1();

    Pour plus de détails, regarde le design pattern Etat (State) et le pattern IOC (injection du code).

    Parcque pour aller plus loin, tu peux faire les instanciations selon un fichier de config. Bon si tu veux, je vais t'expliquer ça

Discussions similaires

  1. Probleme : option strict on rejette toute liaison tardive
    Par Roken62 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/04/2009, 16h20
  2. Réponses: 1
    Dernier message: 10/02/2009, 12h11
  3. Liaison tardive et bindingsource
    Par manu.relais dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 26/09/2008, 11h19
  4. Réponses: 3
    Dernier message: 06/02/2008, 18h11
  5. Liaison tardive avec app.config
    Par Promeneur dans le forum C#
    Réponses: 4
    Dernier message: 16/03/2007, 12h29

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