CollectionBase en VS 2003 Overridable NotOverridable

28/08/2004 - 17:12 por Simon Graffe | Informe spam
Hola, amigos:
Acabo de pasarme a VS 2003 y no me funcionan algunas cosas que funcionaban
en la versión anterior. En particular, tengo una clase derivada de
CollectionBase, que sobrepasaba la función clear mediante una declaración
Public Overrides Sub Clear()

...

Pero ahora me sale un mensaje de error:

'Public Overrides Sub Clear()' no puede reemplazar a 'Public Overridable
NotOverridable Sub Clear()' porque está declarado como 'NotOverridable'.


Pero esta declaración Overridable NotOverridable es contradictoria. Cómo
puede ser una función Overrridable y Not al mismo tiempo? En la
documentación aparece como

Public Overridable Sub Clear() Implements IList.Clear

¿Alguien sabe qué puede estar pasando?

Preguntas similare

Leer las respuestas

#1 Pedro Luna Montalvo \(MVP.NET\)
29/08/2004 - 05:54 | Informe spam
Tengo una dudapara que sobrecargar Clear()???

Si quieres realizar alguna accion justo al momento de limpiar una colección,
no podrias sobrecargar los manejadores de evento: OnClear y
OnClearComplete??

Just wondering... ;)

Pedro Luna, MVP
Gye, Ecu


"Simon Graffe" escribió en el mensaje
news:
Muchas gracias, Eduardo.
He colocado Shadows en vez de Overrides, y parece funcionar (bueno, en
realidad compila, pero como hay otros errores que antes tampoco aparecían,
no he podido correr el programa), pero no tengo claras las implicaciones


de
usar Shadows en vez de Overrides. ¿Cuál es la diferencia?

Saludos


Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP VB]
29/08/2004 - 06:12 | Informe spam
La diferencia entre shadows y overrides es que con shadows si declaras la
variable usando la base case accederas al metodo de la base clase en lugar
del nuevo metodo. Ejemplo para verlo mas claro:

Class A

Overridable Sub Metodo1
Console.Write("ClaseA.Metodo1")
End Sub


NotOverridable Sub Metodo2
Console.Write("ClaseA.Metodo2")
End Sub

End Class

Class B
Inherits B

Overrides Sub Metodo1
Console.Write("ClaseB.Metodo1")
End Sub

Shadows Sub Metodo2
Console.Write("ClaseB.Metodo2")
End Sub

End Class

Dim objB As New ClassB
dim objA As ClassA = objB

' objA y objB contienen referencias a un mismo objeto

objA.Metodo1 ' Imprime: ClaseB.Metodo1
objB.Metodo1 ' Imprime: ClaseB.Metodo1
objA.Metodo2 ' Imprime: ClaseA.Metodo2
objB.Metodo2 ' Imprime: ClaseB.Metodo2

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