您好我想在项目中从继承访问一个对象,但我找不到办法 我的页面是;
public partial class siteler_page : siteDynamic
{
public static string pageType = "contentpage";
protected void Page_Load(object sender, EventArgs e)
{
}
}
主要课程是; (我想在onpreinit中访问该pageType参数)
public class siteDynamic : System.Web.UI.Page
{
public siteDynamic()
{
//
// TODO: Add constructor logic here
//
}
protected override void OnPreInit(EventArgs e)
{
// I want to access the pageType in here
base.OnPreInit(e);
}
}
任何帮助表示赞赏,本来是
答案 0 :(得分:1)
一种方法是定义一个抽象属性,让子类覆盖它(siteDynamic
应该是abstract
类):
public abstract class siteDynamic : System.Web.UI.Page
{
public siteDynamic()
{
// ...
}
public abstract string PageType { get; }
protected override void OnPreInit(EventArgs e)
{
string type = this.PageType;
// ...
base.OnPreInit(e);
}
}
public partial class siteler_page : siteDynamic
{
public override string PageType
{
get
{
return "contentpage";
}
}
protected void Page_Load(object sender, EventArgs e)
{
// ...
}
}
答案 1 :(得分:1)
这不起作用,因为您的父类siteDynamic在您的子类siteler_page之前首先被初始化。至少这是你如何设置它。为了使其工作,你的父类应该在父类中有一个属性,然后覆盖基类方法并在那里设置值。
public abstract class siteDynamic : System.Web.UI.Page
{
public string PageType { get; set; }
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
}
}
public partial class siteler_page : siteDynamic
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnPreInit(EventArgs e)
{
base.PageType = "contentpage";
base.OnPreInit(e);
}
}