C# 可以扩展页面事件的System.Web.Ui.Page派生类?
我创建了一个从System.Web.Ui.Page继承的BasePage类。在这个基类中,我有一个bool属性来检查页面是否安全。最初,我将代码放在(基类的)PreInit事件中,但仔细考虑之后,我的派生页面将无法在PreInit之前设置bool值。然后我考虑在dervcied页面的PreInit中设置值,并在基类的PageInit中检查该值,但是如果我需要在派生页面中使用PreInit呢 我考虑过使用分部方法,但我认为我不能这样做,因为页面事件在System.Web.Ui.page中不是分部的,对吗 顺便说一下,我的BasePage类是一个抽象类 这就是我现在所做的(我没有对此进行测试,但假设它可以工作):C# 可以扩展页面事件的System.Web.Ui.Page派生类?,c#,asp.net,derived-class,C#,Asp.net,Derived Class,我创建了一个从System.Web.Ui.Page继承的BasePage类。在这个基类中,我有一个bool属性来检查页面是否安全。最初,我将代码放在(基类的)PreInit事件中,但仔细考虑之后,我的派生页面将无法在PreInit之前设置bool值。然后我考虑在dervcied页面的PreInit中设置值,并在基类的PageInit中检查该值,但是如果我需要在派生页面中使用PreInit呢 我考虑过使用分部方法,但我认为我不能这样做,因为页面事件在System.Web.Ui.page中不是分部的
为什么不在
构造函数中设置您的ISecure,因为您最早就可以获得ISecure
只需将其定义为:
public _Default()
{
IsSecure = true;
}
为什么不在构造函数中设置您的ISecure,因为您最早就可以获得ISecure
只需将其定义为:
public _Default()
{
IsSecure = true;
}
更好的解决方案可能是重写基类中的OnInit方法。现在仍然可以在页面中处理init事件,并在引发事件之前执行安全检查
因此:
更好的解决方案可能是重写基类中的OnInit方法。现在仍然可以在页面中处理init事件,并在引发事件之前执行安全检查
因此:
我建议您将IsSecure
属性抽象(并且是只读的),并让派生页面实现它。确定属性值的逻辑包含在属性的getter中
在基本页面中
:
protected abstract bool IsSecure { get; }
在\u默认值中
等:
protected override bool IsSecure
{
get { // return true or false depending on some condition }
}
我建议您将IsSecure
属性抽象(并且是只读的),并让派生页面实现它。确定属性值的逻辑包含在属性的getter中
在基本页面中
:
protected abstract bool IsSecure { get; }
在\u默认值中
等:
protected override bool IsSecure
{
get { // return true or false depending on some condition }
}
您的代码很好,如果希望能够扩展PageInit,只需重写并调用派生类中的基即可
public partial class _Default : BasePage
{
protected override void Page_Init(object sender, EventArgs e)
{
base.Page_Init(sender, e);
//more code here
}
}
您的代码很好,如果希望能够扩展PageInit,只需重写并调用派生类中的基即可
public partial class _Default : BasePage
{
protected override void Page_Init(object sender, EventArgs e)
{
base.Page_Init(sender, e);
//more code here
}
}
你的想法是正确的。我不明白你在哪里遇到了问题。你能举一个伪代码的例子吗?当你说“页面是否安全”是什么意思?用户是否有权查看它?@Anders Fjeldstad-是的,这是出于用户安全原因。我们对此有特殊需要。@Bazzz-我在使用分部方法时遇到了一个问题,但我正试图获得一些建议,了解如何最好地从派生页面设置布尔值,并始终在基类中检查它。在页面生命周期的什么时候(哪个事件),派生页面能够设置属性?您的想法是正确的。我不明白你在哪里遇到了问题。你能举一个伪代码的例子吗?当你说“页面是否安全”是什么意思?用户是否有权查看它?@Anders Fjeldstad-是的,这是出于用户安全原因。我们对此有特殊的需要。@Bazzz-我在使用分部方法时遇到了一个问题,但我正试图获得一些建议,了解从派生页设置布尔值的最佳方法,并始终在基类中对其进行检查。在页面生命周期的什么时候(哪个事件),派生页能够设置属性?这没什么错,但我不希望看到应用程序逻辑嵌入到构造函数中。构造函数应该是快速和轻量级的。最好将检查合并到页面生命周期事件中。只设置属性,我认为这相当轻量级。。我想避免在构造函数中使用逻辑。不过我考虑过了。这没什么错,但我不想看到应用程序逻辑嵌入到构造函数中。构造函数应该是快速和轻量级的。最好将检查合并到页面生命周期事件中。只设置属性,我认为这相当轻量级。。我想避免在构造函数中使用逻辑。不过我想了想。