Наследование codebehind
От: ksu  
Дата: 23.11.04 14:58
Оценка:
Всем привет!
Хочется создать базовый класс для 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) я вообще коренным образом ошибаюсь где-то в области ООП и так лучше не делать, а работает "чисто случайно"

?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.