日期:2014-05-18  浏览次数:20406 次

页面的生命周期问题----页面后置代码中类什么时候实例化????
如题,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。提3个问题
1:在生命周期中类的实例化在什么时候?
2:在生命周期中该类的基类的什么时候实例化?
3:在生命周期中在该类中实例化一个其他的类在什么时候?
谢谢
C# code

public partial class departmentWorksList:WGBasePage
{
    public Entity.DBHelper helper = new DBHelper();//随便举的个例子
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}



------解决方案--------------------
C#中所有类的实例化都是在new之后,产生这个类的实例.只是在页面中IDE隐藏了一些基本类的实例化过程.你看不到代码.或者需要通过别的办法看代码.
基类的实例化是在子类调用new之后几乎同时找到基类并且将基类的性质传递给子类的.
------解决方案--------------------
!!
首先是变量再执行departmentWorksList类的构造。。在开始执行构造的时候如果有基类则实例化基类,一直往上。
public Entity.DBHelper helper = new DBHelper();应该是最先实例化的,你可以断点调试下。

------解决方案--------------------
测试一下不就知道了
C# code

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace WebApplication1
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            BaseClass bc = new BaseClass(this);
            ChildClass cc = new ChildClass(this);
            Response.Write("Page_Load" + "<br>");
        }
    }

    public class BaseClass
    {
        public BaseClass()
        { }
        public BaseClass(Page p)
        {
            p.Response.Write("BaseClass" + "<br>");
        }
    }

    public class ChildClass : BaseClass
    {
        public ChildClass(Page p)
        {
            p.Response.Write("ChildClass" + "<br>");
        }
    }
}

------解决方案--------------------
1、如果类是Page或者从Page上继承下来的类,那么当这个页面被访问的时候,就是对其实例化;如果是WebControl,那么一般都是在这个WebControl所在页面cs文件的InitializeComponent里,而这个InitializeComponent方法一般又是在页面的Page_Load方法中去调用,因而如果是WebControl,那么先去实例化这个WebControl所在的页面,再去实例化这个这个页面上的WebControl。
2、实例化一个类的时候,会先去找它的基类,如果有先实例化基类。
3、如果安装你写的例子中来说,helper是在departmentWorksList实例化的过程中去完成。