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 :

Supprimer un objet d'une liste d'objet anonyme


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut Supprimer un objet d'une liste d'objet anonyme
    Le titre est bien explicite alors je vous montre en code:

    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
     
        Private Shared newTrainerList As New List(Of Object)
     
        Public Shared Function getNewTraineList() As List(Of Object)
            Return newTrainerList
        End Function
     
        Public Shared Sub addNewTrainer()
            Static id As New Integer
            id = id + 1
     
            newTrainerList.Add(New With {.Id = id})
        End Sub
     
        Public Shared Sub removeNewTrainer(ByVal id As Integer)
            ??????????
        End Sub
    Alors voila, ma methode removeNewTrainer recoit un id, qui est l'id stocké dans mon objet anonyme. Maintenant, comment supprimer l'objet qui possède cet ID?

    Merci

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Code vb : 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
    Private Shared newTrainerList As New List(Of Object)
     
        Public Shared Function getNewTraineList() As List(Of Object)
            Return newTrainerList
        End Function
     
        Public Shared Sub addNewTrainer()
            Static id As New Integer
            id = id + 1
     
            newTrainerList.Add(New With {.Id = id})
        End Sub
     
        Public Shared Sub removeNewTrainer(ByVal id As Integer)
            Dim found As Object
     
            For Each o As Object In newTrainerList
                If (CType(o.GetType().GetProperty("Id").GetValue(o, Nothing), Integer) = id) Then
                    found = o
                    Exit For
                End If
            Next
     
            If Object.Equals(found, Nothing) Then
                newTrainerList.Remove(found)
            End If
     
        End Sub
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            addNewTrainer()
            removeNewTrainer(1)
        End Sub
    Cependant ce n'est pas parce que l'on peut faire quelque chose qu'il faut le faire. Ce n'est vraiment pas l'idéal d'utiliser les types anonymes dans le cas présent.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    rien compris au code, mais un dictionary serait surement plus adapté qu'un list, non ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Par défaut
    Oui je sais que ce n'est pas nécessaire dans ce cas, mais je l'ai simplifié, merci!

    Je programme depuis longtemps, mais je suis débutant en vb, quel sont les désavantages d'utiliser un objet anonyme dans un cas semblable?

    EDIT

    Spearot, je fait une application MVC et ce code est dans un helper, qui gère mes listes pour le controller. Cela m'évite de faire des variables sessions, ce que je déteste.

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Tu sens pas que c'est un peut space d'accéder aux membres des objets en question ?

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    ps.

    Je ne vois pas comment tu fais, en partant de
    Citation Envoyé par blackshadow153 Voir le message
    je fait une application MVC
    tu arrives à
    Citation Envoyé par blackshadow153 Voir le message
    Cela m'évite de faire des variables sessions
    , sincèrement.

    Dans le cas présent j'aurai juste crée une autre classe (une vraie, pas une anonyme) avec toutes les propriétés que je veux sur mon objet, et j'aurai construit la liste à partir de ces instances de classes.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    au moins une interface avec la propriété à tester
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Travailler avec des type Object c'est faire des liaisons tardives donc risquer des bug. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If (CType(o.GetType().GetProperty("Id").GetValue(o, Nothing), Integer) = id) Then
    Si tu fais une faute de frappe sur "Id" le compilateur ne va rien dire et à l'exec ça va crasher. Tu perds tout l'interêt de l'IntelliSense de l'IDE.

    De plus les opération de Cast (CType-TryCast-DirectCast) sont des opération couteuse en ressources...

    Bref comme le disait smyley ça fonctionne mais c'est pas top du tout.

    Ne connaissant pas cette syntaxe pour le With "newTrainerList.Add(New With {.Id = id})". J'ai copié collé le code et chez moi il n'en veut pas du With.
    C'est du VB 2008 ? Ici je suis en 2005.

Discussions similaires

  1. Chercher un objet dans une liste d'objet
    Par Axiome dans le forum Windows Forms
    Réponses: 5
    Dernier message: 10/10/2008, 09h43
  2. Réponses: 2
    Dernier message: 07/10/2008, 13h17
  3. Ajout de Node a partir d'objet contenant une liste d'objet
    Par Al_Bundy dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/08/2008, 14h35
  4. Réponses: 2
    Dernier message: 29/05/2008, 15h59
  5. afficher une liste d'objets sur une page en flow.
    Par looploop dans le forum JSF
    Réponses: 1
    Dernier message: 18/09/2007, 10h54

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