我正在开发一个使用ASP.NET 4.5的ASP.NET Webforms网站。我有一个用于表单的母版页,但我希望页面类继承自另一个SitePage类,其代码如下:
public abstract class SitePage : Page
{
protected void Page_Load(object sender, EventArgs e)
{
// common logic here
Page_LoadImpl(sender, e);
}
protected abstract void Page_LoadImpl(object sender, EventArgs e);
}然后,页面的类将如下所示:
public partial class MyPage: SitePage
{
protected override void Page_LoadImpl(object sender, EventArgs e)
{
//page specific logic here
}
}我有Java背景,如何让我的SitePage Page_Load方法是最终的,不可重写的?我知道我可以使用嵌套母版页来实现相同的功能,但我不想重新定义页面的内容。谢谢
发布于 2013-04-22 18:13:34
只有当一个方法被标记为“虚拟”或“抽象”时,它才是可重写的。
您的方法"Page_Load“没有使用这些关键字进行标记,因此它已经是不可重写的。
发布于 2013-04-22 18:03:10
使用sealed-keyword,它与Java中的final功能相同。
来自MSDN的示例
class X
{
protected virtual void F() { Console.WriteLine("X.F"); }
protected virtual void F2() { Console.WriteLine("X.F2"); }
}
class Y : X
{
sealed protected override void F() { Console.WriteLine("Y.F"); }
protected override void F2() { Console.WriteLine("X.F3"); }
}
class Z : Y
{
// Attempting to override F causes compiler error CS0239.
// protected override void F() { Console.WriteLine("C.F"); }
// Overriding F2 is allowed.
protected override void F2() { Console.WriteLine("Z.F2"); }
}发布于 2013-04-22 18:07:47
public abstract class SitePage : Page
{
sealed protected void Page_Load(object sender, EventArgs e)
{
// common logic here
Page_LoadImpl(sender, e);
}
protected abstract void Page_LoadImpl(object sender, EventArgs e);
}https://stackoverflow.com/questions/16144285
复制相似问题