none
Crear Clase Colección Class Collection RRS feed

  • Pregunta

  • Un saludo a todos.

     

    Intento crear una Clase de Colección, pero no logro que trabaje.

     

    Code Snippet

    Public Class clsUsuarios

    Inherits CollectionBase

     

    Private _Nombre As String

    Public Property Nombre() As String

    Get

    Return _Nombre

    End Get

    Set(ByVal value As String)

    _Nombre = value

    End Set

    End Property

     

    Private _Empresa As String

    Public Property Empresa() As String

    Get

    Return _Empresa

    End Get

    Set(ByVal value As String)

    _Empresa = value

    End Set

    End Property

     

    End Class

     

     

    La verdad no se que me falta

     

    No logro hacer el Item.Count

    Ni un recorrido por los Items

    For i = 0 to clsUsuarios.Count - 1

    Clase.Item(i).Nombre = "Nuevo Nombre"

    Next

     

    Por ejemplo.

     

    Ojala alguien pueda ayudarme.

     

    Un saludo

    martes, 22 de abril de 2008 15:43

Todas las respuestas

  • Bueno, pues parece que tienes una mala concepción de las colecciones. En esencia, una colección es... er... bueno, una colección de objetos. En tu ejemplo, ¿dónde tienes esa colección? Solo agregas dos métodos, pero no hay ninguna colección.

    Posiblemente la colección más sencilla es un array. De hecho, la clase CollectionBase tiene un array interno (ArrayList), que sirve para guardar lo que quieras. Ahora bien, esta clase la usas como... base. Solo agrégale los métodos que necesites. Por ejemplo, Add, Remove, GetAt, etc, que deberán ser del tipo de dato que quieras guardar, digamos, la clase Usuario:

    Public Class Usuario
        Private _nombre As String
        Private _empleado As String

        Public Sub New(ByVal nombre As String, ByVal empleado As String)
            _nombre = nombre
            _empleado = empleado
        End Sub

        Public Property Nombre() As String
            Get
                Nombre = _nombre
            End Get
            Set(ByVal value As String)
                _nombre = value
            End Set
        End Property

        Public Property Empleado() As String
            Get
                Empleado = _empleado
            End Get
            Set(ByVal value As String)
                _empleado = value
            End Set
        End Property
    End Class

    Public Class UsuarioCollection
        Inherits CollectionBase

        Public Sub Add(ByVal usuario As Usuario)
            InnerList.Add(usuario)
        End Sub

        Public Sub AddRange(ByVal rango As ICollection(Of Usuario))
            InnerList.AddRange(rango)
        End Sub

        Public Sub Remove(ByVal usuario As Usuario)
            InnerList.Remove(usuario)
        End Sub

        REM ...etcétera...

    End Class

    y entonces sí, ahora ya puedes emplear la colección:

    Dim col As New UsuarioCollection

    Call col.Add(New Usuario("fernando", "epeople"))
    Call col.Add(New Usuario("gaby", "nestlé"))
    Call col.Add(New Usuario("tania", "tours"))

    For Each usr As Usuario In col
        REM ...blablabla...
    Next

    Saludos.
    jueves, 8 de mayo de 2008 18:28