在母版页(c#)中定义派生类

在母版页(c#)中定义派生类,c#,master-pages,C#,Master Pages,我的项目在默认页面类的派生类上扩展的所有web窗体/页面 即代替 公共部分类myfirstpage:System.web.ui.page {} 我有公共部分类myfirstpage:myderivedclass {} 但是,在母版页的代码隐藏中,如果我执行“this.page”,则假定我仍在使用system.web.ui.page 有人知道我如何将其更改为我的新派生类吗?我假设您需要在新类中重写System.Web.Ui.page的页面字段。我假设您需要在新类中重写System.Web.Ui.p

我的项目在默认页面类的派生类上扩展的所有web窗体/页面

即代替

公共部分类myfirstpage:System.web.ui.page
{}

我有
公共部分类myfirstpage:myderivedclass
{}

但是,在母版页的代码隐藏中,如果我执行“
this.page
”,则假定我仍在使用system.web.ui.page


有人知道我如何将其更改为我的新派生类吗?

我假设您需要在新类中重写System.Web.Ui.page的页面字段。

我假设您需要在新类中重写System.Web.Ui.page的页面字段。

在主控中,创建一个新属性:

public new MyDerivedPage Page { get { return (MyDerivedPage) base.Page; } }

在主控形状中,创建一个新特性:

public new MyDerivedPage Page { get { return (MyDerivedPage) base.Page; } }

我不确定您所说的“它假设我仍在使用
System.Web.UI.Page
”是什么意思。您的意思是
this.Page
的数据类型是
System.Web.UI.Page
,但您希望它是
MyderiveClass

如果是这种情况,那么就无法更改该数据类型。您可以创建自己的“隐藏”现有属性的属性,但实际上无法更改它

public MyDerivedClass Page
{
    get { return (MyDerivedClass)base.Page; }
}

我不确定你所说的“它假设我仍在使用
System.Web.UI.Page
”是什么意思。您的意思是
this.Page
的数据类型是
System.Web.UI.Page
,但您希望它是
MyDerivedClass

如果是这样,那么就没有办法更改该数据类型。您可以创建自己的“隐藏”现有属性的属性,但实际上无法对其进行更改

public MyDerivedClass Page
{
    get { return (MyDerivedClass)base.Page; }
}

这假设母版页将始终与派生页类一起使用,这种情况可能是,也可能不是,将其添加到派生页类中会更安全。如果要将其添加到母版页,还应将MasterType page变量添加到页面中,以便使用Master.page,它将自动将Master属性强制转换到母版页,并因此返回重写的属性,如:您说的是,而不是从母版页调用页面函数,将函数放在母版中并从页面调用它们?母版页应具有通用函数,页面可以根据需要使用这些函数(它们知道自己在做什么)。这将使母版与派生页面类分离。只是一个建议。此外,母版了解布局及其容器,任何共享逻辑都应该在派生类中。假设母版页将始终与派生页类一起使用,可能是这样,也可能不是这样,将其添加到派生页类中会更安全。如果要将其添加到母版页,还应将MasterType page变量添加到页面中,以便使用Master.page,它将自动将Master属性强制转换到母版页,并因此返回重写的属性,如:您说的是,而不是从母版页调用页面函数,将函数放在母版中并从页面调用它们?母版页应具有通用函数,页面可以根据需要使用这些函数(它们知道自己在做什么)。这将使母版与派生页面类分离。只是一个建议。此外,主人知道布局及其容器,任何共享逻辑都应该在派生类中