如何从继承访问对象

时间:2015-10-30 14:38:32

标签: c# asp.net visual-studio inheritance

您好我想在项目中从继承访问一个对象,但我找不到办法 我的页面是;

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);
    }
}

任何帮助表示赞赏,本来是

2 个答案:

答案 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);
}
}