Pude haber entendido mal el significado de base.OnLoad(e);
Mi entendimiento fue que esta declaración llamará al método OnLoad de la clase base de la clase desde donde se llama. Sin embargo, cuando uso el depurador para recorrer el código, veo resultados diferentes.base.OnLoad (e) en una página ASP.NET
public abstract class BaseUC : System.Web.UI.UserControl
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
SomeAbstractMethod();
}
}
En la clase concreta ascx.cs
public partial class MyUserControl : BaseUC
{
protected void Page_Load(object sender, EventArgs e)
{
//On Load logic
}
}
que tienen un punto de interrupción en base.OnLoad(e)
. Cuando presiono F11 (Entrar en), el depurador me lleva a Page_Load
de MyUserControl, por lo que el flujo de control es:
BaseUC.OnLoad()
MyUserControl.Page_Load()
BaseUC.SomeAbstractMethod()
Puede alguien explicar lo que está pasando aquí?
"BaseUC.Onload llama a Control.OnLoad que desencadena el evento Load". ¿Qué línea está haciendo que esto suceda? – DotnetDude
base.OnLoad (e): el código que hay dentro elevará el evento. –
Supongo que esa es la parte que no entiendo. ¿Por qué base.OnLoad (e) llama al Control.OnLoad (en este caso, MyUserControl.Page_Load() )? – DotnetDude