简体   繁体   中英

Using class members without mentioning class name

I have a global class and an asp.net page. I want use globally declared singleton members without re-declaring the class name.

for example:

Panel.cs:

public class Panel {
    public static Panel P = new Panel();
    private Panel() {

    }
    public void DoSomething() {
        HttpContext.Current.Response.Write("Everything is OK!");
    }
}

sample.aspx.cs:

public partial class temp_sample :System.Web.UI.Page {
    Panel p = Panel.P;
    protected void Page_Load(object sender, EventArgs e) {

        //regular:
        myP.DoSomething();

        //or simply:
        Panel.P.DoSomething();

        //it both works, ok
        //but i want to use without mentioning 'Panel' in every page
        //like this:
        P.DoSomething();
    }
}

Is this possible? Thank you very much!

Create base class inherited from Page

class MyPage : System.Web.UI.Page 

and put your p property there once.

Than just inherit your pages from MyPage instead of System.Web.UI.Page

assuming you're just looking to implement the singleton pattern (avoid scoping a Panel property within each page):

public class Panel
{
    #region Singleton Pattern
    public static Panel instance = new Panel();
    public static Panel Instance
    {
        get { return instance; }
    }
    private Panel()
    {
    }
    #endregion

    public void DoSomething()
    {
        HttpContext.Current.Response.Write("Everything is OK!");
    }
}

Then reference it simply using:

Panel.Instance.DoSomething();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM