Entiendo que anular un método/función redefine su implementación en la clase derivada desde su implementación en la clase base.¿Debo llamar a la implementación de la clase base al anular un método en C# para ASP.NET?
Ahora lo que me confunde, es si puedo reemplazar una clase en ASP.NET como CreateChildControls()
(lo escogí al azar sin ninguna razón en particular), VS2008 automático genera:
protected override void CreateChildControls()
{
base.CreateChildControls();
}
suficientemente bueno, la implementación por defecto simplemente llama a la clase base 'CreateChildControls()
.
Así que si quiero correr un cierto código, ya que no sé cómo base.CreateChildControls()
, debo hacer esto:
protected override void CreateChildControls()
{
/*My Code Here*/
base.CreateChildControls();
}
o, ignorar lo base.CreateChildControls()
por completo y sólo lo hacen
protected override void CreateChildControls()
{
/*My Code Here*/
}
Es realmente sorprendente para mí que se te permita anular una clase base que no tienes. – Matt
Tengo que tener esa libertad. El hecho de que sea su hijo no significa que quiera hacer todo lo que usted hace. A veces, necesito salir al mundo y hacer las cosas a mi manera. Serías un padre sobreprotector si me obligaste a tener tu implementación. :) –
Comenzando por el hecho de que estoy invocando la clase base cuando anulo en mi 'Control' personalizado, con respecto a las anulaciones' OnXxxx' generalmente obtengo que llamo 'base.OnXxxx' al final de mi método derivado. ¿Existe alguna regla general sobre si llamar a 'base.CreateChildControls' al comienzo o al final del método derivado? – superjos