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 :

list(of class.object) chargement de la liste [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut list(of class.object) chargement de la liste
    Bonjour a tous,
    Je travaille actuellement sur un projet assez important en terme de nombre de lignes et j'y ai inséré quelques class objet qui ont parfois entre 20 et 50 propriétés.
    Comme je travaille sur des bases de données en multi-poste et multi-taches, j'ai donc développé des listes de classe objet que je ne recharge que lors du démarrage ou lorsque la classe a été modifiée, et ce afin d’accéder plus rapidement et sans accès réseau au données très fréquemment utilisées tel que liste de projets, liste d’unités, liste de devises avec taux de change, etc...

    Tout marche très bien mais, je cherche a alléger mon code. J'ai donc crée pour ce forum un petit exemple qui ne sert a rien si ce n'est a exposer mon problème.

    construction de la 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Namespace Lettres
        Module ClassC
            Public Class LConsVoy
                Private m_id As Integer
                Private m_Cons As String
                Private m_Voy As String
                Public Sub New(ID As Integer, Cons As String, Voy As String)
                    m_id = ID 'numero d'ordre
                    m_Cons = Cons 'consonnes
                    m_Voy = Voy 'voyelles
                End Sub
                Public Property ID As Integer
                    Get
                        Return m_id
                    End Get
                    Set(value As Integer)
                        m_id = value
                    End Set
                End Property
                Public Property Cons As String
                    Get
                        Return m_Cons
                    End Get
                    Set(value As String)
                        m_Cons = value
                    End Set
                End Property
                Public Property Voy As String
                    Get
                        Return m_Voy
                    End Get
                    Set(value As String)
                        m_Voy = value
                    End Set
                End Property
            End Class
        End Module
    End Namespace
    la partie test de la 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Public Class Form1
        Dim LstClasLet As New List(Of Lettres.LConsVoy) 'define a list of class
        Dim tblC() As String = {"B", "C", "D", "F", "G", "H"}
        Dim tblV() As String = {"A", "E", "I", "O", "U", "Y"}
     
        Private Sub LoadList1()
            Dim CL As Lettres.LConsVoy
            For n As Integer = 0 To 5
                CL = New Lettres.LConsVoy(n, tblC(n), tblV(n))
                LstClasLet.Add(New Lettres.ClassC.LConsVoy(CL.ID, CL.Cons, CL.Voy))
            Next
            Dsp
        End Sub
        Private Sub loadlist2()
            Dim CL As Lettres.LConsVoy
            For n As Integer = 0 To 5
                CL = New Lettres.LConsVoy(n, tblC(n), tblV(n))
                'LstClasLet.Add(New Lettres.ClassC.LConsVoy(CL))   *** c'est de cette facon que j'aimeri pouvoir charger ma list d'objets plutot que d'ecrire toutes les proprietes une a une
            Next
            DSP()
        End Sub
        Private Sub DSP()
            Dim Str As String = ""
            For Each C As Lettres.LConsVoy In LstClasLet
                Str = Str & C.ID & " " & C.Cons & " " & C.Voy & vbCrLf
            Next
            MsgBox(Str)
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            LoadList1()
        End Sub
     
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            loadlist2
        End Sub
    End Class
    La procédure LoadList1 fonctionne parfaitement mais, si il y a 50 propriétés dans la classe, il faut les écrire une a une.
    Je n'arrive pas a faire fonctionner le chargement de la liste de classe en invoquant uniquement la classe (loadlist2). Je comprends bien pourquoi ça merde, je cherche juste a contourner cela sans y parvenir.
    J'ai bien entendu retourne le web et les forums sans résultats. Si vous avez un lien ou une idée...
    Ou peut être suis complètement parti a l'envers, le but étant de limiter les accès réseau et soulager la BDD et le serveur, peut être y a t'il une autre solution que les listes de class...
    Merci a tous.

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut Reponse a moi meme
    Re bonjour,
    Apres avoir réfléchi plutôt que d’écrire bêtement, j'ai trouve une solution. Elle n'est pas parfaite mais permet de n’écrire qu'une fois les propriétés. Il suffit de surcharger la class NEW de cette façon
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Namespace Lettres
        Module ClassC
            Public Class LConsVoy
                Private m_id As Integer
                Private m_Cons As String
                Private m_Voy As String
                Public Sub New(ID As Integer, Cons As String, Voy As String)
                    m_id = ID 'numero d'ordre
                    m_Cons = Cons 'consonnes
                    m_Voy = Voy 'voyelles
                End Sub
                Public Sub New(CL As Lettres.LConsVoy)
                    m_id = CL.ID 'numero d'ordre
                    m_Cons = CL.Cons 'consonnes
                    m_Voy = CL.Voy 'voyelles
                End Sub
                Public Property ID As Integer
                    Get
                        Return m_id
                    End Get
                    Set(value As Integer)
                        m_id = value
                    End Set
                End Property
                Public Property Cons As String
                    Get
                        Return m_Cons
                    End Get
                    Set(value As String)
                        m_Cons = value
                    End Set
                End Property
                Public Property Voy As String
                    Get
                        Return m_Voy
                    End Get
                    Set(value As String)
                        m_Voy = value
                    End Set
                End Property
            End Class
        End Module
    End Namespace
    et, a partir de là, la sub loadlist2 fonctionne très bien également.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Public Class Form1
        Dim LstClasLet As New List(Of Lettres.LConsVoy) 'define a list of class
        Dim tblC() As String = {"B", "C", "D", "F", "G", "H"}
        Dim tblV() As String = {"A", "E", "I", "O", "U", "Y"}
     
        Private Sub LoadList1()
            LstClasLet.Clear()
            Dim CL As Lettres.LConsVoy
            For n As Integer = 0 To 5
                CL = New Lettres.LConsVoy(n, tblC(n), tblV(n))
                LstClasLet.Add(New Lettres.ClassC.LConsVoy(CL.ID, CL.Cons, CL.Voy))
            Next
            DSP()
        End Sub
        Private Sub loadlist2()
            LstClasLet.Clear()
            Dim CL As Lettres.LConsVoy
            For n As Integer = 0 To 5
                CL = New Lettres.LConsVoy(n, tblC(n), tblV(n))
                LstClasLet.Add(New Lettres.ClassC.LConsVoy(CL))
            Next
            DSP()
        End Sub
        Private Sub DSP()
            Dim Str As String = ""
            For Each C As Lettres.LConsVoy In LstClasLet
                Str = Str & C.ID & " " & C.Cons & " " & C.Voy & vbCrLf
            Next
            MsgBox(Str)
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            LoadList1()
        End Sub
     
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            loadlist2
        End Sub
    End Class
    si cela peux servir à quelqu'un...

    Je reste intéressé par toute idée ou toute solution pour alléger tout ça...

    Merci à tous.

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Je ne comprends pas pourquoi créer 2 instances de la classes : la seconde étant une copie de la première ? Pourquoi ne pas faire simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub loadlist2()
        LstClasLet.Clear()
        Dim CL As Lettres.LConsVoy
        For n As Integer = 0 To 5
            CL = New Lettres.LConsVoy(n, tblC(n), tblV(n))
            LstClasLet.Add(CL)
        Next
        DSP()
    End Sub

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut
    Oui effectivement Ebastien,
    J'ai écrit ça a titre d'exemple et j ai juste ensuite modifie lorsque j'ai trouve la solution de surcharge de la class new...
    J'aurai du également réfléchir a l’intérêt de mettre 2 instances..
    Merci Ebastien.

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

Discussions similaires

  1. Récupérer la liste des classes d'un package
    Par Coulon Arnaud dans le forum Général Java
    Réponses: 20
    Dernier message: 30/12/2010, 00h04
  2. Filtrer une liste de classes
    Par neuromencien dans le forum Langage
    Réponses: 7
    Dernier message: 14/10/2006, 11h22
  3. Réponses: 2
    Dernier message: 17/07/2006, 13h06
  4. Chargement D Une Liste
    Par flo64 dans le forum Access
    Réponses: 5
    Dernier message: 07/06/2006, 09h06
  5. Chargement de la liste des imprimantes dans TPrinterDialog
    Par bernie.noel dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/02/2006, 16h57

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