Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/04/2009, 05:16
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 8 meses
Puntos: 7
Generics - Implementar interfaz "dinámica"

Buenas foreros !!!

Siento el título, pero no se me ocurria como ponerlo.

Tengo la siguiente clase:
Código:
<Serializable()> Public Class ClsMedicoList
    Inherits List(Of ClsMedico)


End Class
Bien, pues he implementado una clase, para ordenar esta lista. Pongo lo más relevante de la clase.

Código:
    Public Class ClsComparadorMedico
        Implements IComparer(Of ClsMedico)

        Public Sub New(ByVal campoFiltro As String, ByVal ordenFiltro As EnumTipoOrden)

            Me._campoFiltro = campoFiltro
            Me._ordenFiltro = ordenFiltro
        End Sub

Public Function Compare(ByVal x As SINSA_ENTITIES.ClsMedico, ByVal y As SINSA_ENTITIES.ClsMedico) As Integer Implements System.Collections.Generic.IComparer(Of SINSA_ENTITIES.ClsMedico).Compare
'Codigo
'Codigo
End Function

Muy bien, ahora para ordenar la lista, lo tengo facil, hago lo siguiente y me la ordena perfecto:

Código:
Me.ListaMedicos.Sort(New HerramientasPresentacion.ClsComparadorMedico("NombrePropiedadDeLaClase", Me.DireccionOrdenacion))

LA PREGUNTA DEL MILLÓN:
¿Como puedo hacer, para que ClsComparadorMedico, en vez de solo recibir elementos de ClsMedico, pueda ser cualquier otro tipo de objeto?


Lo que quiero es, que si tengo otro tipo de Lista, por ejemplo:
Código:
<Serializable()> Public Class ClsCocheList
    Inherits List(Of ClsCoche)

End Class
Pueda llamar también a la misma ordenación.
Código:
Me.ListaCoches.Sort(New HerramientasPresentacion.ClsComparadorMedico("NombrePropiedadDeLaClase", Me.DireccionOrdenacion))

En fin, espero haberme explicado y que puedan ayudarme... lo que quiero es cambair ese implements y la function Compare, para que reciba tipos genéricos, ya que con Object, no me está funcionando...
__________________
Charlie.

Última edición por chcma; 02/04/2009 a las 05:24