6
votes

Vb.net Besoin d'une propriété de classe pour être un tableau de liste

Overflowers de pile:

J'ai saisi mon cerveau en essayant d'obtenir une liste (de t) Type Type pour être la propriété d'une classe. Je sais qu'il doit y avoir un moyen simple de le faire et je ne trouve pas un bon exemple sur Google. Chaque fois que je crée une classe que je pense fonctionnera, je reçois la "référence d'objet non définie sur une instance d'une erreur d'objet" lorsque j'essaie de l'utiliser. Je pense maintenant que je ne peux pas l'utiliser dans la façon dont j'espérais. Voici ma dernière tentative: xxx

J'essaie de renvoyer la classe MasterItem à partir d'une fonction de test comme ceci: xxx

Qu'est-ce que je fais mal ici? Merci d'avance.


1 commentaires

Tu as raison - c'est une collection. Il était tard quand je l'ai tapé.


3 Réponses :


14
votes

Vous n'avez pas créé d'instance de liste que vous essayez de mettre des éléments à.

Initialisez-le dans le constructeur de votre classe d'accessoires. Quelque chose comme xxx


0 commentaires

1
votes

Vous avez 2 options pour éviter la nullreferenceException:

1) L'approche Elder_George mentionnée, où vous initialisez la propriété à une nouvelle instance de la classe: p> xxx pré>

Le problème avec cette approche est que si vous ne l'initialisez pas quelque part que vous savez qu'il sera toujours valide à utiliser plus tard, vous devrez faire le même chèque et / ou initialiser. Que "quelque part" pourrait être sur une charge de forme ou telle. P>

2) Initialisez la variable du magasin de support de la propriété. Faites cela une fois et vous n'avez pas besoin de vérifier pour NULL tout le temps. Notez la modification de la déclaration _Item code> ci-dessous: p> xxx pré>

avec ce qui précède, vous y accéderiez directement comme suit: P>

Dim ReturnItem As New MasterItem
ReturnItem.PrimaryItem.ItemNo = "TEST123"


2 commentaires

Je savais que c'était quelque chose de simple, je viens de négliger. L'option n ° 2 correspondra parfaitement à ma situation. Merci.


Changé ma réponse accessive au poste d'Elder_George après avoir fait des recherches supplémentaires et testant les deux suggestions.



1
votes

Essayez quelque chose comme ça ..

Public Class ActiveInfo
    Private _services As List(Of ActiveService)

    Public Sub New()
        _services = New List(Of ActiveService)
    End Sub
    Public Property Services() As List(Of ActiveService)
        Get
            Return _services
        End Get
        Set(ByVal value As List(Of ActiveService))
            _services = value
        End Set
    End Property
End Class


0 commentaires