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 :

Problème pour implémenter une Interface


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Points : 141
    Points
    141
    Par défaut Problème pour implémenter une Interface
    Salut all !

    J'ai une .dll d'un projet précédent d'ajouté à mes références de projet, cette dll contient des classes et des interfaces.

    J'ai donc dans mon nouveau projet une classe du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    using myReferenceContenantLesInterfaces;
    namespace myLibrary
    {
        public class Win32Tool
     
        {
        }
    }
    Les méthodes incluent dans les interfaces que j'ai besoin, me retournent des chaines string etc...Donc à partir de ma classe, j'ai modifier mon code de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    using myReferenceContenantLesInterfaces;
    namespace myLibrary : monInterface
    {
        public class Win32Tool
        {
         string maChaine = monInterface.GetString();
        }
    }
    Sauf que ca marche pas...

    C'est la première fois que j'utilise les interface, aussi je ne sais pas trop si je code de la bonne facon...

    merci de votre aide

  2. #2
    Membre averti Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Points : 428
    Points
    428
    Par défaut
    Salut, effectivement une interface ne s'utilise pas de cette façon. Apparemment monInterface doit ressembler à ça, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    namespace myReferenceContenantLesInterfaces
    {
        public interface monInterface
        {
            string GetString();
        }
    }
    Pour l'utiliser avec ta classe Win32Tool dans ton autre projet, il faut l'implémenter au niveau de ta classe et non au niveau du namespace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    using myReferenceContenantLesInterfaces;
     
    namespace myLibrary
    {
        public class Win32Tool : monInterface
        {
            public string GetString()
            {
                return "Hello world !!";
            }
        }
    }
    Par contre, vu ton exemple, j'ai l'impression que tu n'as pas encore très bon compris le concept d'Interface. Mais c'est normal puisque que comme tu le dis c'est la première fois
    Il faut voir l'Interface comme une sorte de contrat. Ici en faisant implémenter ton interface à la classe Win32Tool, ça signifie que la cette classe s'engage à fournir les méthodes/Accesseurs/Events... décritent par l'interface.
    Ici monInterface possède une méthode GetString(), donc la classe Win32Tool doit fournir elle aussi une méthode GetString()

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 60
    Points
    60
    Par défaut
    Je réagis suite à la remarque de _PascalC_. Il est fort possible que les interfaces soient déjà implémentées par des classes de la dll (si ces dernières sont en internal notamment, elles ne sont utilisables de l'extérieur que depuis les interfaces). Aussi dans ce cas là je chercherais plutôt dans ta dll quelque chose qui permette de récupérer/créer des instances (comme une classe qui serve de factory ?) .

    Ca donnerait une chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    using myReferenceContenantLesInterfaces;
    namespace myLibrary
    {
        public class Win32Tool
        {
    // Récupération de l'interface (la classe ClasseInterfaceFactory serait dans la dll)
             ClasseInterfaceFactory factory = new ClasseInterfaceFactory ();
             MonInterface linterface = factory.GetInterface();
    // Utilisation de la méthode de l'interface
             string maChaine = linterface.GetString();
        }
    }

Discussions similaires

  1. Problème pour implémenter une JProgressBar
    Par lalalala75 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 21/05/2012, 11h25
  2. Problème pour implémenter l'interface Comparable
    Par scheme dans le forum Langage
    Réponses: 15
    Dernier message: 29/01/2011, 19h31
  3. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  4. [MSSQL] Problème pour sélectionner une seule occurence
    Par Tinfolley dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/07/2004, 09h02
  5. Réponses: 3
    Dernier message: 29/08/2003, 10h57

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