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 :

[c#] Interfaces + static


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut [c#] Interfaces + static
    Bonjour , comment redéfinir une méthode d'une interface dans une classe qui l'implémente en la mettant static ?

    Merci !

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Une interface ne peut pas contenir de méthodes ou membre static. Par contre elle peut contenir une méthode virtuelle...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Par défaut
    Merci !

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Leole Voir le message
    Bonjour , comment redéfinir une méthode d'une interface dans une classe qui l'implémente en la mettant static ?
    Si la méthode est statique, elle n'implémente pas l'interface... Une interface ne peut définir que des membres d'instance. Ce qui est logique, vu qu'on ne peut pas redéfinir une méthode statique dans une classe dérivée...

    Citation Envoyé par harz62 Voir le message
    Une interface ne peut pas contenir de méthodes ou membre static. Par contre elle peut contenir une méthode virtuelle...
    Oui, mais tu ne peux pas marquer une méthode comme virtuelle dans l'interface... c'est la classe qui implémentera l'interface qui définira si la méthode est virtuelle ou non.

  5. #5
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    J'avais confondu avec les classes abstraites

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Comment faire en sorte que des classes devant contenir des methodes statiques présentent toutes les mêmes.
    Par exemple dans une couche métier que toutes les classes implémentent au moins Insert, GetById, Update, Delete avec des objets types en entrée ou retour.
    Si j'ai cette classe:
    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
    public class Stock : IBasicBll
    {
        #region IBasicBll Members
     
        public int Create(StockEntity obj)
        {
            throw new Exception("The method or operation is not implemented.");
        }
     
        public object GetById(int id)
        {
            throw new Exception("The method or operation is not implemented.");
        }
     
        public bool Update(StockEntity obj)
        {
            throw new Exception("The method or operation is not implemented.");
        }
     
        public bool Delete(int id)
        {
            throw new Exception("The method or operation is not implemented.");
        }
     
        #endregion
    }
    J'obtiens l'interface suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public interface IStock
    {
        int Create(StockEntity obj);
        bool Delete(int id);
        object GetById(int id);
        bool Update(StockEntity obj);
    }
    Mais les objets sont typés.
    Si je remplace mes objets typés par "object"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public interface IBasicBll
    {
        int Create(object obj);
     
        object GetById(int id);
     
        bool Update(object obj);
     
        bool Delete(int id);
    }
    Je suis obligé de les convertir
    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
    public class Stock : IBasicBll
    {
        #region IBasicBll Members
     
        public int Create(object obj)
        {
            StockEntity stock = (StockEntity)obj;
            return 0;
        }
     
        public object GetById(int id)
        {
            StockEntity stock = new StockEntity();
            return stock;
        }
     
        public bool Update(object obj)
        {
            StockEntity stock = (StockEntity)obj;
            return true;
        }
     
        public bool Delete(int id)
        {
            return true;
        }
     
        #endregion
    }
    Auriez-vous une solution?
    Merci.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Tu changes IBasicBll en IBasicBll<T> et tu fais hériter Stock de IBasicBll<StockEntity>.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/06/2008, 13h34
  2. [Interface] méthodes static
    Par JMLLB dans le forum Langage
    Réponses: 11
    Dernier message: 13/04/2007, 16h18
  3. Réponses: 16
    Dernier message: 26/10/2006, 16h17
  4. methode static interface
    Par samtheh dans le forum Langage
    Réponses: 3
    Dernier message: 15/10/2006, 19h25
  5. Réponses: 6
    Dernier message: 27/07/2005, 09h06

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