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 :

Comment récupérer une List<> dans une méthode appelante [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut Comment récupérer une List<> dans une méthode appelante
    Bonjour,

    La méthode "RUN_SQL_EXTRACT" ci dessous renvoie une liste ( "Return RCD_INTERLO_COLLEC" ).


    Mon souci, c'est que j'appelle cette méthode dans une autre classe d'une autre programme et je souhaite récupérer dans la méthode appelante ma liste <>.


    J'ai bien essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // [ Bouton test Extraction INTERLOCUTEUR ]
            private void BTN_TST_ASSEMBLY_REQTE_INTERLO_Click(object sender, RoutedEventArgs e)
            {
     
                // Instancie la classe de la méthode à appeler 
                INTERLO_CLASS_DLL.CLS_LIST_INTERLO RQTE_INTERLO = new INTERLO_CLASS_DLL.CLS_LIST_INTERLO();
     
                // Crée un objet liste "LISTE_INTERLO"  ayant la même structure que l'objet List renvoyé par la méthode "RUN_SQL_EXTRACT"
                List<CLS_STR_INTERLO> LISTE_INTERLO = new List<CLS_STR_INTERLO>();
     
                // Appelle la méthode "RUN_SQL_EXTRACT" ( avec les bons paramètres ) et récupère la liste "CLS_STR_INTERLO" dans "LISTE_INTERLO "
                LISTE_INTERLO = RQTE_INTERLO.RUN_SQL_EXTRACT("ARC", "PIERRE");
     
            }


    Le compilateur me renvoie l'erreur :
    "Impossible de convertit implicitement le type "system.Collectios.Generic.List<INTERLO_CLASS_DLL.STRINTERLO>' en system.Collecdtions.Generic.List<VCNET_START_ASSEMBLY_PGM.CLS_STR_INTERLO>".



    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
    public List<CLS_STR_INTERLO>RUN_SQL_EXTRACT(string P_FCTN, string P_ARGUMENT_EXTRACT_REQUETE)
            {
     
                // [ on construit la requête à partir des mots
                //  saisis dans la zone de recherche ] 
                String W_ResulSql = CLS_STQ_BUILD_RQTE_INTERLO.RQTE_INTERLO(P_FCTN, P_ARGUMENT_EXTRACT_REQUETE);
     
                // [ Création de la connection ]
                String ConnectString = "Provider=IBMDA400;" +
                                            "Password=WEBDEV;" +
                                            "User ID=WEBDEV;" +
                                            "Data Source=192.168.1.192;";
     
                OleDbConnection ConnectLst = new OleDbConnection(ConnectString);
     
                try
                {
     
                    ConnectLst.Open();
                }
                catch (Exception ex)
                {
                    // ( Gérer traitement erreur ici ) 
                }
     
                // [  Création adaptateur  ]
                OleDbDataAdapter MyAdapt = new OleDbDataAdapter();
     
                // [ Création DataSet ]
                DataSet myDataSet = new DataSet();
     
     
                // Exécution de la requête via l'adapteur et injection dans le DataSet
                // [ Un ADAPTATEUR sert à REMPLIR un DATASET ]
                // ( L'adapteur lance et exécute la requête en ouvrant la connexion ) 
                MyAdapt.SelectCommand = new OleDbCommand(W_ResulSql, ConnectLst);
     
                try
                {
                    MyAdapt.Fill(myDataSet, "INTERLO");
                }
                catch (Exception ex)
                {
                   // ( Gérer traitement erreur ici ) 
                }
     
                // [ Création d'une collection de la structure  RCD_INTERLO ]
                //   ( On crée une collection "RCD_INTERLO_COLLEC" 
                //     à partir de la structure "RCD_INTERLO" ) 
                List<CLS_STR_INTERLO> RCD_INTERLO_COLLEC = new List<CLS_STR_INTERLO>();
     
     
                // [ Chargement de la collection en alimentant la structure ] 
                //  ( Pour chaque ligne de la table "INTERLO" du dataset "MyDatSet", 
                //    on alimente ligne par ligne la collection "RCD_INTERLO_COLLEC" ) 
                foreach (DataRow row in myDataSet.Tables["INTERLO"].Rows)
                {
                    RCD_INTERLO_COLLEC.Add(new CLS_STR_INTERLO()
                    {
                        NOM = (row["FNOMIN"].ToString()),
                        PRENOM = (row["FPREIN"].ToString()),
                        RESPONSABLE = (row["FNMRSP"].ToString()),
                        TITRE = (row["FTITRE"].ToString()),
                        LIBELLE_TITRE = (row["FTITLL"].ToString()),
                        FONCTION = (row["FFONCT"].ToString()),
                        LIBELLE_FONCTION = (row["FFONLL"].ToString()),
                        SERVICE = (row["FSERVA"].ToString()),
                        LIBELLE_SERVICE = (row["FSERLL"].ToString()),
                        USER = (row["FUSER"].ToString()),
                        SOCIETE = (row["FSTE"].ToString()),
                        ETAB = (row["FETAB"].ToString()),
                        NUM_CHRO = (row["FCHROI"].ToString())
                    });
                }
     
                return RCD_INTERLO_COLLEC;
     
            }
        }

    J.C

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Tu essaies de convertir des patates en choux, c'est ca le souci:

    "Impossible de convertit implicitement le type "system.Collectios.Generic.List<INTERLO_CLASS_DLL.STRINTERLO>' en system.Collecdtions.Generic.List<VCNET_START_ASSEMBLY_PGM.CLS_STR_INTERLO>"
    Mais le probleme ne vient du code poste, il n'y a pas declaration de
    List<INTERLO_CLASS_DLL.STRINTERLO>

  3. #3
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2016
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 154
    Points : 268
    Points
    268
    Par défaut
    bonjour,
    A bien regarder la definition de ta fonction il me semble que le probleme devrait se trouver là où tu as utilisé la methode Add.
    est ce que le type generique ne serait pas different de celui de l'appel ?

    Je me trompe peut etre mais je voulais juste etre utile.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Bonjour,


    dans le code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Crée un objet liste "LISTE_INTERLO"  ayant la même structure que l'objet List renvoyé par la méthode "RUN_SQL_EXTRACT"
                List<CLS_STR_INTERLO> CLS_STR_INTERLO = new List<CLS_STR_INTERLO>();
     
                // Appelle la méthode "RUN_SQL_EXTRACT" ( avec les bons paramètres ) et récupère la liste "CLS_STR_INTERLO" dans "LISTE_INTERLO "
                CLS_STR_INTERLO = RQTE_INTERLO.RUN_SQL_EXTRACT("ARC", "PIERRE");
    dans la méthode appelante, " CLS_STR_INTERLO" a la même structure que dans la méthode "RQTE_INTERLO.RUN_SQL_EXTRACT" appelée.


    Je comprends bien que le compilateur ne peut pas convertir "des choux" en "carottes", c'est bien pour cette raison que dans les deux méthodes qui communiquent, cette
    liste a bien la même structure...
    Je suis sûr que c'est un pbm basique, mais là je sèche.....

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2016
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 64
    Points : 91
    Points
    91
    Par défaut
    Salut,

    peu importe que la structure soit la même, si ce n'est pas le même type ça ne marchera pas (ou alors type dérivé avec une implémentation générique covariante - ce qui n'est pas le cas de List<T> de toute façon).
    Ta méthode appelante doit utiliser le type List<T> où T est le type retourné par l'autre dll. Pas un type ayant la même structure mais bien le même type.

  6. #6
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    J'avoue ne pas être sûr de tout suivre ; mais si je comprends bien ; tu as 2 classes dans 2 projets/applications différents qui ont la même "structure" et le même nom et tu cherches à transférer le contenu de l'une dans l'autre (en gros) ?
    S'il s'agit bien de cela alors sache que ce n'est pas parce qu'elles ont le même nom et la même structure qu'elles sont identiques ; et donc que tu cherches bien à convertir des choux en carottes.

    Ce qu'il te faudrait peut-être c'est sortir cette classe commune pour la mettre dans une dll (une bibliothèque) à part qui sera référencée par tes 2 autres projets ; ainsi il s'agira bien de la même pour les 2.

    En même temps ce que je pige mal ; c'est que tu as dû référencer un des 2 projets dans l'autre pour les faire communiquer donc a priori (selon sa visibilité) tu devrais pouvoir accéder à ce type sans avoir à le recréer.

    Bref c'est pas très clair
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Bonjour,


    Je n'ai pas été très clair, pardon...

    J'ai une DLL qui renvoie une liste de données. Voici la méthode de cette DLL chargée de remplir la liste et de la renvoyée :


    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
      public List<CLS_STR_INTERLO>RUN_SQL_EXTRACT(string P_FCTN, string P_ARGUMENT_EXTRACT_REQUETE)
            {
     
                // [ on construit la requête à partir des mots
                //  saisis dans la zone de recherche ] 
                String W_ResulSql = CLS_STQ_BUILD_RQTE_INTERLO.RQTE_INTERLO(P_FCTN, P_ARGUMENT_EXTRACT_REQUETE);
     
                // [ Création de la connection ]
                String ConnectString = "Provider=IBMDA400;" +
                                            "Password=WEBDEV;" +
                                            "User ID=WEBDEV;" +
                                            "Data Source=192.168.1.192;";
     
                OleDbConnection ConnectLst = new OleDbConnection(ConnectString);
     
                try
                {
     
                    ConnectLst.Open();
                }
                catch (Exception ex)
                {
                    // ( Gérer traitement erreur ici ) 
                }
     
                // [  Création adaptateur  ]
                OleDbDataAdapter MyAdapt = new OleDbDataAdapter();
     
                // [ Création DataSet ]
                DataSet myDataSet = new DataSet();
     
     
                // Exécution de la requête via l'adapteur et injection dans le DataSet
                // [ Un ADAPTATEUR sert à REMPLIR un DATASET ]
                // ( L'adapteur lance et exécute la requête en ouvrant la connexion ) 
                MyAdapt.SelectCommand = new OleDbCommand(W_ResulSql, ConnectLst);
     
                try
                {
                    MyAdapt.Fill(myDataSet, "INTERLO");
                }
                catch (Exception ex)
                {
                   // ( Gérer traitement erreur ici ) 
                }
     
                // [ Création d'une collection de la structure  RCD_INTERLO ]
                //   ( On crée une collection "RCD_INTERLO_COLLEC" 
                //     à partir de la structure "RCD_INTERLO" ) 
                List<CLS_STR_INTERLO> RCD_INTERLO_COLLEC = new List<CLS_STR_INTERLO>();
     
     
                // [ Chargement de la collection en alimentant la structure ] 
                //  ( Pour chaque ligne de la table "INTERLO" du dataset "MyDatSet", 
                //    on alimente ligne par ligne la collection "RCD_INTERLO_COLLEC" ) 
                foreach (DataRow row in myDataSet.Tables["INTERLO"].Rows)
                {
                    RCD_INTERLO_COLLEC.Add(new CLS_STR_INTERLO()
                    {
                        NOM = (row["FNOMIN"].ToString()),
                        PRENOM = (row["FPREIN"].ToString()),
                        RESPONSABLE = (row["FNMRSP"].ToString()),
                        TITRE = (row["FTITRE"].ToString()),
                        LIBELLE_TITRE = (row["FTITLL"].ToString()),
                        FONCTION = (row["FFONCT"].ToString()),
                        LIBELLE_FONCTION = (row["FFONLL"].ToString()),
                        SERVICE = (row["FSERVA"].ToString()),
                        LIBELLE_SERVICE = (row["FSERLL"].ToString()),
                        USER = (row["FUSER"].ToString()),
                        SOCIETE = (row["FSTE"].ToString()),
                        ETAB = (row["FETAB"].ToString()),
                        NUM_CHRO = (row["FCHROI"].ToString())
                    });
                }
     
                return RCD_INTERLO_COLLEC;
     
            }

    l'objet List<CLS_STR_INTERLO> retourné est une liste de classe "CLS_STR_INTERLO" :

    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
      // <><><><><><><><><><><><>
        // Classe <CLS_STR_INTERLO> 
        // <><><><><><><><><><><><>
         public class CLS_STR_INTERLO
     
        // set => accés en écriture
        // get => accés en lecture 
     
        {
            // Nom interlocuteur 
            public string NOM { set; get; }
            // Prénom interlocuteur
            public string PRENOM { set; get; }
            // Nom responsable
            public string RESPONSABLE { set; get; }
            // Code titre 
            public string TITRE { set; get; }
            // Libellé  titre 
            public string LIBELLE_TITRE { set; get; }
            // Code Fonction 
            public string FONCTION { set; get; }
            // Libellé  Fonction
            public string LIBELLE_FONCTION { set; get; }
            // Code Service
            public string SERVICE { set; get; }
            // Libellé  Service
            public string LIBELLE_SERVICE { set; get; }
            // Utilisateur
            public string USER { set; get; }
            // Societe 
            public string SOCIETE { set; get; }
            // ETAB 
            public string ETAB { set; get; }
            // N° CHRNO
            public string NUM_CHRO { set; get; }
     
        }

    Cette fameuse DLL est appelé par autre traitement (interactif) qui souhaite seulement lire la liste remplie par la méthode évoquée ci dessus sur l’événement "_click" d'un bouton :


    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
    // [ Bouton test Extraction INTERLOCUTEUR ]
            private void BTN_TST_ASSEMBLY_REQTE_INTERLO_Click(object sender, RoutedEventArgs e)
            {
     
                // Instancie la classe de la méthode à appeler 
                RQTE_CLASS_DLL.CLS_LIST_INTERLO RQTE_INTERLO = new RQTE_CLASS_DLL.CLS_LIST_INTERLO();
     
                // Crée un objet liste "LISTE_INTERLO"  ayant la même structure que l'objet List renvoyé par la méthode "RUN_SQL_EXTRACT"
                List<CLS_STR_INTERLO> CLS_STR_INTERLO = new List<CLS_STR_INTERLO>();
     
                // Appelle la méthode "RUN_SQL_EXTRACT" ( avec les bons paramètres ) et récupère la liste "CLS_STR_INTERLO" dans "LISTE_INTERLO "
                CLS_STR_INTERLO = RQTE_INTERLO.RUN_SQL_EXTRACT("ARC", "PIERRE");
     
     
     
            }

    J'ai bien crée une liste "CLS_STR_INTERLO" basé également sur la même classe que l'on a dans la méthode de la DLL cité ci dessus.

    Dans mon programme interactif, j'ai a nouveau créer une classe "CLS_STR_INTERLO" :


    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
     // <><><><><><><><><><><><>
        // Classe <CLS_STR_INTERLO> 
        // <><><><><><><><><><><><>
         public class CLS_STR_INTERLO
     
        // set => accés en écriture
        // get => accés en lecture 
     
        {
            // Nom interlocuteur 
            public string NOM { set; get; }
            // Prénom interlocuteur
            public string PRENOM { set; get; }
            // Nom responsable
            public string RESPONSABLE { set; get; }
            // Code titre 
            public string TITRE { set; get; }
            // Libellé  titre 
            public string LIBELLE_TITRE { set; get; }
            // Code Fonction 
            public string FONCTION { set; get; }
            // Libellé  Fonction
            public string LIBELLE_FONCTION { set; get; }
            // Code Service
            public string SERVICE { set; get; }
            // Libellé  Service
            public string LIBELLE_SERVICE { set; get; }
            // Utilisateur
            public string USER { set; get; }
            // Societe 
            public string SOCIETE { set; get; }
            // ETAB 
            public string ETAB { set; get; }
            // N° CHRNO
            public string NUM_CHRO { set; get; }
     
        }

    Donc, si je reprends le code de mon programme interactif, la liste censée récupérée le résultat renvoyé par ma DLL est construite à l'identique :

    Il s'agir bien d'une liste <T> dans la dernière ligne de code ci dessous (=>" // Appelle la méthode "RUN_SQL_EXTRACT" )


    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
    // [ Bouton test Extraction INTERLOCUTEUR ]
            private void BTN_TST_ASSEMBLY_REQTE_INTERLO_Click(object sender, RoutedEventArgs e)
            {
     
                // Instancie la classe de la méthode à appeler 
                RQTE_CLASS_DLL.CLS_LIST_INTERLO RQTE_INTERLO = new RQTE_CLASS_DLL.CLS_LIST_INTERLO();
     
                // Crée un objet liste "LISTE_INTERLO"  ayant la même structure que l'objet List renvoyé par la méthode "RUN_SQL_EXTRACT"
                List<CLS_STR_INTERLO> CLS_STR_INTERLO = new List<CLS_STR_INTERLO>();
     
                // Appelle la méthode "RUN_SQL_EXTRACT" ( avec les bons paramètres ) et récupère la liste "CLS_STR_INTERLO" dans "LISTE_INTERLO "
                CLS_STR_INTERLO = RQTE_INTERLO.RUN_SQL_EXTRACT("ARC", "PIERRE");
     
     
            }

    Je suis sûr qu'il y a quelque chose qui m'échappe....

  8. #8
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par LIANAZEL Voir le message
    J'ai bien crée une liste "CLS_STR_INTERLO" basé également sur la même classe que l'on a dans la méthode de la DLL
    Citation Envoyé par LIANAZEL Voir le message
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Instancie la classe de la méthode à appeler RQTE_CLASS_DLL.CLS_LIST_INTERLO RQTE_INTERLO = new RQTE_CLASS_DLL.CLS_LIST_INTERLO();
     
    // Crée un objet liste "LISTE_INTERLO"  ayant la même structure que l'objet List renvoyé par la méthode "RUN_SQL_EXTRACT"
    List<CLS_STR_INTERLO> CLS_STR_INTERLO = new List<CLS_STR_INTERLO>();
    Tu vois bien que RQTE_CLASS_DLL.CLS_LIST_INTERLO et CLS_LIST_INTERLO ce n'est pas le même type ; tu as été obligé de préfixer le première par (ce que je pense être) l'espace de nom le contenant pour pouvoir les distinguer ; c'est qu'ils sont différents

    J'illustre par un exemple bidon :
    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
    namespace Foo
    {
        public class Unique
        {
            public decimal Argent { get; }
        }
    }
     
    namespace Bar
    {
        public class Unique
        {
            public decimal Argent { get; }
        }
    }
    la classe Foo.Unique et la classe Bar.Unique ont beau être "identiques" (visuellement) elle ne sont pas "identiques" pour le compilateur et donc vouloir stocker un Bar.Unique dans une List<Foo.Unique> (ou juste List<Unique> si on est dans l'espace de noms Foo) ne fonctionnera pas
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  9. #9
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Donc cette opération est impossible en C# ??

  10. #10
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par LIANAZEL Voir le message
    Donc cette opération est impossible en C# ??
    Bien évidemment que non ! Un exemple "simple" :

    Une baguette en boulangerie, que l'on pourrait nommer de la manière suivante : Boulangerie.Baguette
    Une baguette en magie, que l'on pourrait nommer de la manière suivante : Magie.Baguette

    On parle bien du même nom, mais dans des contextes différents.

    Pour répondre à ce problème, tu peux te renseigner sur les interfaces.

  11. #11
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Citation Envoyé par LIANAZEL Voir le message
    Donc cette opération est impossible en C# ??
    J'ai déjà répondu à ça ; tu pourrais déporter ta classe dans une dll à part et l'utiliser des 2 côté ; ou sur le même principe utiliser une interface comme suggéré par ZenZiTone
    Ou encore plus simplement vu que tu référence déjà RQTE_CLASS_DLL.CLS_LIST_INTERLO pour pouvoir l'utiliser dans l'autre projet ; fais toi une List<RQTE_CLASS_DLL.CLS_LIST_INTERLO> plutôt qu'une List<CLS_LIST_INTERLO> d'un truc que tu t'es obligé à réécrire pour rien vu que t'y a déjà accès
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  12. #12
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Merci pour vos explications....


    Merci Sehnsucht, j'ai compris...


    Je comprends vite ( mais il faut m'expliquer longtemps (!) )


    Le C# est un langage avec pas mal de subtilités, je me rends bien compte qu'il faut du temps pour assimiler tout ça.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Utiliser valeur d'une liste de choix dans une liste déroulante d'un autre formulaire
    Par Sébastien1609 dans le forum Macros Access
    Réponses: 1
    Dernier message: 11/06/2015, 15h31
  2. Réponses: 9
    Dernier message: 21/05/2014, 20h21
  3. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  4. Réponses: 0
    Dernier message: 09/11/2010, 15h43
  5. Réponses: 3
    Dernier message: 22/05/2006, 09h58

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