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 :

Interface : converstion de Type en IType


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut Interface : converstion de Type en IType
    Hello,

    Je débute dans l'utilisation des interfaces et je rencontre quelques problèmes.

    Notamment, avec une classe X implémentant l'interface IX.

    Concrètement, voici mon problème...

    J'ai classe Y suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Class Y
        Public Property Property_X As List(Of IX)
     
        'd'autres propriétés et méthodes
    End Class
    Quelque part ailleurs, je fais la chose suivante :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim listX As List(Of X)
    listX = UneFonctionQuiRenvoiUneListeDeX()
    Dim monY As Y
    monY.Property_X = listX
    Et VS râle sur la ligne en gras car il ne peut/sait pas convertir un liste de X en liste de IX.

    J'avais pourtant cru comprendre que c'était tout l'intérêt des interfaces...

    Qu'en est-t-il et comment résoudre mon problème ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    VS râle et a parfaitement raison parce que tout simplement la classe List(Of X) ne dérive pas de List(Of IX). Bien que X implémente IX cela ne veut pas dire que List(Of X) et List(Of IX) ont une quelconque relation.

    Une solution qui peut marcher :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    monY.Property_X = listX.ConvertAll<IX>(
      delegate(X x)
      {
        return x as IX;
      } );

    Désolé pour le C#
    Dernière modification par Invité ; 15/10/2013 à 13h27.

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Je me doutais bien que VS ne râlait pas à tord mais je ne comprends pas pourquoi.

    J'vais voir pour me trouver de la "vraie" doc sur les interfaces...

    EDIT :

    Au final, je pense que je faisais une mauvaise utilisation des interfaces...

    J'ai donc contourné le problème.

    N.B. : La solution de h2s84 fonctionne mais débouche sur un autre problème derrière

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/03/2011, 14h18
  2. Réponses: 3
    Dernier message: 19/06/2009, 18h33
  3. Une interface graphique du type Iphone
    Par noiser007 dans le forum C#
    Réponses: 3
    Dernier message: 01/03/2009, 19h45
  4. Comment faire une interface de ce type....
    Par SpiderAlpha dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/04/2007, 13h50
  5. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51

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