Crear método Add con clave

05/10/2005 - 19:01 por moti | Informe spam
Hola,
soy priniciante en visual basic net y quiero crear el método add utilizando
clave para una clase que representa una colección. La clave deseo que sea el
código de cada uno de los elementos de la colección, ¿como lo puedo hacer?.
el codigo que tengo es el siguiente:


Public Class MiObjeto
Sub New(ByVal codigo As Long)
Me.Codigo = codigo
End Sub

Dim m_Codigo As String

Property Codigo() As String
Get
Return m_Codigo
End Get
Set(ByVal Value As String)
m_Codigo = Value
End Set
End Property

Dim m_Descripcion As String
Property Descripcion() As String
Get
Return m_Descripcion
End Get
Set(ByVal Value As String)
m_Descripcion = Value
End Set
End Property

End Class

Public Class MiObjetoColeccion
Inherits System.Collections.CollectionBase

Sub Add(ByVal valor As MiObjetoColeccion)
InnerList.Add(valor)
End Sub
End Class

me gustaría poder acceder a los elementos de la coleccion mediante el codigo
del elemento, es decir si me declaro:

private col as MiObjetoColeccion
private miobj as New MiObjeto
miobj.Codigo= "blanco"
col.Add(miobj, miobj.Codigo)

' poder acceder al elemento mediante la siguiente sentencia
col("blanco").Descripcion

gracias

moti
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
06/10/2005 - 05:25 | Informe spam
Hereda la clase de la coleccion de DictionaryBase o mejor aun
NameObjectCollectionBase. Luego para poder acceder a los elementos sin
llamar a una propiedad deberas declarar una propiedad con el modificador
Default. Mas o menos te quedaria asi la clase:

Public Class MiObjetoColeccion
Inherits System.Collections.Specialized.NameObjectCollectionBase

Sub Add(ByVal clave As String, ByVal valor As MiObjeto)
BaseAdd(clave, valor)
End Sub

Default Property Item(ByVal clave As String) As MiObjeto
Get
Return DirectCast(BaseGet(clave), MiObjeto)
End Get
Set(ByVal valor As MiObjeto)
BaseSet(clave, valor)
End Set
End Property

' etc.

End Class

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Preguntas similares