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

VB.NET Discussion :

Classe partielle et implémentation d'une interface [Débutant]


Sujet :

VB.NET

  1. #1
    Expert éminent
    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
    Points : 9 512
    Points
    9 512
    Par défaut Classe partielle et implémentation d'une interface
    Bonjour,

    J'ai mis débutant parce que je débute en VB.Net....

    J'ai des objets créés avec un Entity Data Model. Pour compléter ces objets, j'ai créé une classe partielle. Je voudrai que ces objets implémentent une interface métier.

    En C# c'est assez facile. Si l'entité MonObjet existe dans le modèle, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public partial class MonObjet : IMonInterface { }
    .
    Par contre, en VB, si les propriétés existent déjà dans le modèle, VS impose la "redéclaration" des propriétés de l'interface. Voici le message d'erreur:
    Erreur 1 Class 'MonObjet' doit implémenter 'Property Description As String' pour l'interface 'IMonInterface'. La propriété d'implémentation doit avoir des spécificateurs 'ReadOnly' ou 'WriteOnly' correspondants.
    Peut-on eviter cela?

    Merci de votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 184
    Points : 4 501
    Points
    4 501
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Property Description As String Implements IMonInterface.Description
    Get 
    Set
    End Property

  3. #3
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Ce n'est pas lié aux classes partielles en fait... C'est parce qu'en VB un membre qui implémente une interface doit le déclarer. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Interface IFoo
        Property Bar As String
    End Interface
     
    Partial Class Foo
     
        Public Property Bar As String Implements IFoo.Bar
     
    End Class
    Puisque le designer ne connait pas ton interface, il ne génère pas le Implements IFoo.Bar, il fait juste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Partial Class Foo
     
        Public Property Bar As String
     
    End Class
    Donc l'autre partie de la classe partielle, il faut donc que tu spécifies une implémentation pour l'interface. Tu peux le faire avec une propriété privée pour ne pas encombrer l'API publique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Partial Class Foo
        Implements IFoo
     
        Public Property BarImpl As String Implements IFoo.Bar
            Get
                Return Me.Bar
            End Get
            Set(ByVal value As String)
                Me.Bar = value
            End Set
        End Property
     
    End Class

  4. #4
    Expert éminent
    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
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par tomlev Voir le message
    il faut donc que tu spécifies une implémentation pour l'interface.
    Argh...

    Je commence à detester le VB.

    Merci

  5. #5
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Je commence à detester le VB.
    Bienvenue au club

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 19/11/2008, 09h58
  2. comment compiler une classe sous linux qui implemente une interface
    Par nina08 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 19/11/2008, 09h43
  3. Deux implémentations pour une interface
    Par apqmwnqmap dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/05/2007, 16h21
  4. Liste des implémentations d'une interface
    Par YokoSop dans le forum Langage
    Réponses: 12
    Dernier message: 08/07/2006, 00h37
  5. Réponses: 5
    Dernier message: 23/02/2006, 01h34

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