Всем привет!
Хочется создать базовый класс для codebehind web-страницы, определив там некоторые контролы и потом его наследовать, что-то типа того:
public class BasePage : System.Web.UI.Page
{
public System.Web.UI.WebControls.Button btnTest;
public BasePage()
{
}
private void Page_Load(object sender, System.EventArgs e)
{
}
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new EventHandler(this.Page_Load);
this.btnTest.Click += new EventHandler(btnTest_Click);
}
private void btnTest_Click(object sender, EventArgs e)
{
DoSomething();
}
public virtual void DoSomething(){}
}
public class InheritedPage : BasePage
{
public override void DoSomething()
{
//...
//...
//...
}
}
Для некоторой страницы Inherits="InheritedPage"
Все работает, но: после того как страница открывается в дизайнере, студия автоматом добавляет описание "public System.Web.UI.WebControls.Button btnTest" в класс InheritedPage, после чего в рантайме благополучно вылетает ошибка "Object reference not set to an instance of an object."
Я вот сомневаюсь между двумя вариантами:
1) дело в дизайнере, если да, то как это можно отключить добавление описания контролов?
2) я вообще коренным образом ошибаюсь где-то в области ООП и так лучше не делать, а работает "чисто случайно"
?