Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Override Equals en una clase obtenida através de webservice

0 views
Skip to first unread message

Pablo

unread,
Dec 29, 2009, 1:06:01 PM12/29/09
to
He elaborado una clase de la siguiente forma:

Public Class Objeto

Private _Listado as List(Of Elemento)
Public Property Listado...
.....

Public Class Elemento
Private _Id as int32
Private _Nombre as String
End Class

End Class

Esta clase la publico usando un webservice que será consumido por un control
Silverlight en una página web. Se crea normalmente la referencia del WS.

Lo que necesito es hacer un override de la función Equals para el objeto
'Elemento', lo hice en la clase original pero puedo observar que no se
adjunta en la referencia del WS.

¿cómo puedo incluir el override de Equals en el objeto 'Elemento' sin tener
que modificar Reference.vb directamente?

De antemano agradezco su ayuda

Alberto Poblacion

unread,
Dec 29, 2009, 3:57:33 PM12/29/09
to
"Pablo" <Pa...@discussions.microsoft.com> wrote in message
news:3C64B392-3CE4-4907...@microsoft.com...

> ¿cómo puedo incluir el override de Equals en el objeto 'Elemento' sin
> tener
> que modificar Reference.vb directamente?

Podrías heredar de la clase Elemento (en el lado cliente) y hacer el
override en tu clase hija.

Pablo

unread,
Dec 29, 2009, 4:47:01 PM12/29/09
to
Me parece que si heredo estoy creando un nuevo objeto, y seguramente no
corresponde al objeto contenido en la referencia

"Alberto Poblacion" wrote:

> .
>

Alberto Poblacion

unread,
Dec 30, 2009, 3:32:40 AM12/30/09
to
"Pablo" <Pa...@discussions.microsoft.com> wrote in message
news:A365E887-D1E1-4617...@microsoft.com...

> Me parece que si heredo estoy creando un nuevo objeto, y seguramente no
> corresponde al objeto contenido en la referencia

No, cuando heredas no creas ningún objeto, símlemente defines una clase.
El objeto se crea cuando haces el "New" de la clase. Así que no habría
problema en hacer un New de tu clase hija, donde prodrías hacer un override
del Equals, y los métodos de la clase (que son ficticios y símplemente
retransmiten la información al servidor) se heredarían de la madre y todo
funcionaría.

El problema que veo en tu caso concreto es que no estás usando la clase
"Elemento" como proxy del servicio, sino que Elemento está definida dentro
de Objeto, que es la que se usa como proxy, así que no se puede cambiar
Elemento por su clase hija (sin modificar Reference.vb). Me temo que cuando
te respondí al principio estaba pensando en hacer un override el Equals de
tu clase Objeto (que sí se podría cambiar haciendo una clase hija), no del
Equals de tu clase Elemento.

Una cosa que no queda clara en tu mensaje: ¿Estás usando al menos la
versión 2005 de Visual Studio? En ese caso, en Reference.vb se te debería
estar creando un Partial Class. Esto te permitiría añadir en paralelo otro
fuente .vb con el mismo Partial Class para que los dos se compilen juntos.
Dentro de tu Partial Class podrías añadir el override que te hace falta.

Pablo

unread,
Dec 30, 2009, 11:16:02 AM12/30/09
to
Muchas gracias por las respuestas Alberto.

Efectivamente estoy haciendo uso de VS 2008; Reference.vb está dentro de un
control Silverlight 3.

Dentro de Reference.vb la clase principal está definida como Partial Public
Class.

¿cómo podría generar otra clase parcial para mi ejemplo?
¿es mejor si extraigo elemento hacia fuera al mismo nivel que Objeto?

"Alberto Poblacion" wrote:

> .
>

Alberto Poblacion

unread,
Dec 30, 2009, 12:14:04 PM12/30/09
to
"Pablo" <Pa...@discussions.microsoft.com> wrote in message
news:9687585A-E34B-4DDD...@microsoft.com...

> Dentro de Reference.vb la clase principal está definida como Partial
> Public
> Class.
>
> ¿cómo podría generar otra clase parcial para mi ejemplo?

Comprueba si la clase "Elemento" también está marcada como Partial. Si
es así, podrías añadir al proyecto una nueva clase, y dentro modificarla
para que quede asi:

Partial Class Objeto
Partial Class Elemento
Public Overrides Function Equals(...) As Boolean
...
End Function
End Class
End Class

> ¿es mejor si extraigo elemento hacia fuera al mismo nivel que Objeto?

Únicamente si el código generado en Reference.vb no te lo ha marcado
como Partial. Si Elemento ya es Partial, no merece la pena que lo extraigas.

0 new messages