Una de colecciones...

22/10/2004 - 19:07 por Oscar | Informe spam
Hola a todos,

Tengo una colección llamada Registros a la que voy añadiendo objetos "cliente", por ejemplo. Mi
pregunta es cómo lo puedo hacer para utilizar la colección Registros para añadir también otros
objetos, como facturas, etc. Para no tener que volver a escribirla.

A esta colección le paso como parámetro el "cliente", de esta manera:

Public Sub Add(ByVal_registro As Cliente)
MyBase.List.Add(_registro)
End Sub

Lo que quiero es poder pasarle como parámetro no solo un registro de cliente, sino de cualquier otro
tipo. Cómo puedo hacerlo?

Gracias y saludos,
Oscar

Preguntas similare

Leer las respuestas

#1 Cesarion
23/10/2004 - 00:13 | Informe spam
Viejo reemplaza tu declaración de la función por la siguiente

Public Sub Add(ByVal _registro As Object)
MyBase.List.Add(_registro)
End Sub


"Oscar" wrote:

Hola a todos,

Tengo una colección llamada Registros a la que voy añadiendo objetos "cliente", por ejemplo. Mi
pregunta es cómo lo puedo hacer para utilizar la colección Registros para añadir también otros
objetos, como facturas, etc. Para no tener que volver a escribirla.

A esta colección le paso como parámetro el "cliente", de esta manera:

Public Sub Add(ByVal_registro As Cliente)
MyBase.List.Add(_registro)
End Sub

Lo que quiero es poder pasarle como parámetro no solo un registro de cliente, sino de cualquier otro
tipo. Cómo puedo hacerlo?

Gracias y saludos,
Oscar




Respuesta Responder a este mensaje
#2 Oscar
23/10/2004 - 01:01 | Informe spam
Gracias por responder,

Pero no puedo hacer eso, porque en esa clase que quiero reutilizar también tengo lo siguente:

Public Function AddNew() As Object Implements IBindingList.AddNew
Dim _recogida As New Recogida(Me)
List.Add(_recogida)
Return _recogida
End Function

no puedo reemplazar la declaración de la variable _recogida, para poder reutilizar, no?

Saludos,
Oscar

"Cesarion" escribió en el mensaje
news:
Viejo reemplaza tu declaración de la función por la siguiente

Public Sub Add(ByVal _registro As Object)
MyBase.List.Add(_registro)
End Sub


"Oscar" wrote:

> Hola a todos,
>
> Tengo una colección llamada Registros a la que voy añadiendo objetos "cliente", por ejemplo. Mi
> pregunta es cómo lo puedo hacer para utilizar la colección Registros para añadir también otros
> objetos, como facturas, etc. Para no tener que volver a escribirla.
>
> A esta colección le paso como parámetro el "cliente", de esta manera:
>
> Public Sub Add(ByVal_registro As Cliente)
> MyBase.List.Add(_registro)
> End Sub
>
> Lo que quiero es poder pasarle como parámetro no solo un registro de cliente, sino de cualquier


otro
> tipo. Cómo puedo hacerlo?
>
> Gracias y saludos,
> Oscar
>
>
>
>

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
23/10/2004 - 03:16 | Informe spam
Podrias crear una clase como base para tus colecciones donde solo tengas que
implementar Add e Item con el tipo especifico para la coleccion. Para
resolver el problema de IBindingList podrias hacer algo asi en la clase
base:

Protected MustOverride Function GetItemType() As Type

Private Function IBindingList_AddNew() As Object Implements
System.ComponentModel.IBindingList.AddNew

Dim obj As Object

' Obtengo el tipo de los items de la coleccion
Dim t AS Type = GetItemType()

' Creo una instancia de la clase especificada por Type
obj = Activator.CreateInstance(t)

' Agrego el item a la coleccion
Me.List.Add(obj)

Return obj

End Function

En las clases que deriven de esta implementas la funcion GetItemType
devolviendo una instancia de Type correspondiente al tipo de la coleccion.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Oscar
23/10/2004 - 03:46 | Informe spam
Gracias, por lo veo un poco complicado... lo dejaré para cuando aprenda más :)

"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el mensaje
news:%
Podrias crear una clase como base para tus colecciones donde solo tengas que
implementar Add e Item con el tipo especifico para la coleccion. Para
resolver el problema de IBindingList podrias hacer algo asi en la clase
base:

Protected MustOverride Function GetItemType() As Type

Private Function IBindingList_AddNew() As Object Implements
System.ComponentModel.IBindingList.AddNew

Dim obj As Object

' Obtengo el tipo de los items de la coleccion
Dim t AS Type = GetItemType()

' Creo una instancia de la clase especificada por Type
obj = Activator.CreateInstance(t)

' Agrego el item a la coleccion
Me.List.Add(obj)

Return obj

End Function

En las clases que deriven de esta implementas la funcion GetItemType
devolviendo una instancia de Type correspondiente al tipo de la coleccion.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida