在ASP.net中创建网页时,代码库继承System.Web.UI.Page
现在,当我扩展页面对象以检查SessionExpired时,我创建了一个新类并从system.web.ui.page继承,并覆盖了一些函数。
问题是在每个页面上,我必须用我的custompage类替换system.web.ui.page。
有没有办法通过添加方法或直接修改方法来扩展类(例如将sessionExpired check添加到System.Web.UI.Page)?
我正在使用.NET 2.0
答案 0 :(得分:2)
您可以为System.Web.UI.Page类添加扩展方法,以便为您检查会话到期时间。我认为这样的事情会起作用。
public static bool CheckSessionExpired(this System.Web.UI.Page page)
{
///...check session expiry here...///
}
扩展方法是C#3.0的特性,因此您必须安装C#3.0编译器来编译代码(VS.NET 2008或更高版本)
在使用.NET 2.0时,您必须创建一个属性,因为扩展方法依赖于仅属于.NET 3.5(System.Core.dll)的属性。只需在项目中创建以下属性,您就可以使用扩展方法:
using System;
namespace System.Runtime.CompilerServices
{
public class ExtensionAttribute : Attribute { }
}
答案 1 :(得分:1)
VB 2008支持扩展方法,但是:扩展方法不能覆盖基类方法,只能添加新方法。他们无法直接访问扩展类型的成员。扩展不是继承。因此,您可以通过扩展方法添加sessionExpired检查并在需要时调用它,但您不能使用它来向System.Web.UI.Page的行为添加任何触发机制。