Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / August 2007

Tip: Looking for answers? Try searching our database.

global class (simple question!)

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
ma - 11 Aug 2007 13:43 GMT
Hello,
  I want to create a global class. To do this I did the followings:

1- Create a class name test. It has a public variable named mystring.
public class test

{

public string mystring = "hello world";

}

2- Create a global.asax and its coresponding global.asax.cs ( i did it using
VC2005)
3 - in global class generated by VC2005, I introduced test class as follow:

public class Global : System.Web.HttpApplication

{

public test myclass;

protected void Application_Start(object sender, EventArgs e)

{

}

protected void Application_End(object sender, EventArgs e)

{

}

}

now I want to use it in an event in a mater page.

I did this:

public partial class Site1 : System.Web.UI.MasterPage

{

protected void Page_Load(object sender, EventArgs e)

{

Response.Write(Application.myclass.mystring);

}

}

but I am getting this error:

Error 1 'System.Web.HttpApplicationState' does not contain a definition for
'myclass'

I do this:

public partial class Site1 : System.Web.UI.MasterPage

{

protected void Page_Load(object sender, EventArgs e)

{

Response.Write(Global.myclass.mystring);

}

}

Error 1 An object reference is required for the nonstatic field, method, or
property 'Global.myclass'

What is wrong wioth my code?

Regards
John Mott - 11 Aug 2007 15:29 GMT
You need to declare the string as

public static string mystring = "Hello World";

I would recommend making it a property

public static mystring {
   get { return "Hello World"; }
}

john
nice clean examples at www.nicecleanexamples.com

> Hello,
>   I want to create a global class. To do this I did the followings:
[quoted text clipped - 78 lines]
>
> Regards
ma - 11 Aug 2007 17:12 GMT
Thanks, but I don 't want that my variable be static. It is an example but
in realworld I want a variable which is not static. What should I do?

Regards

> You need to declare the string as
>
[quoted text clipped - 91 lines]
>>
>> Regards
John Mott - 11 Aug 2007 18:14 GMT
If you're trying to create global variables you sorta do want them static.
You can have something thats modifiable, not just a constant.

static string _mystring = "";

public static string mystring {
   get { return _mystring; }
   set { _mystring = value;}
}

The other option is to create an instance of the global class

public class Global {
   public string mystring = "a default value";
};

public Global GlobalInstance = new Global();

and then you can say

GlobalInstance.mystring = "a new value";

John
nice clean examples at www.nicecleanexamples.com

> Thanks, but I don 't want that my variable be static. It is an example but
> in realworld I want a variable which is not static. What should I do?
[quoted text clipped - 96 lines]
>>>
>>> Regards
ma - 11 Aug 2007 19:49 GMT
Thanks John, But it doesn't work!

I did this in the page load event:

protected void Page_Load(object sender, EventArgs e)

{

Global GlobalInstance=new Global();

Response.Write(GlobalInstance.myclass.mystring);

GlobalInstance.myclass.mystring = "new string";

}

so the first time that I load this page, it should show "Hello World" and
the next time that I download the page ( or refresh it) it should show "new
string" but it always show "hello world"

Any suggestion?

Regards

> If you're trying to create global variables you sorta do want them static.
> You can have something thats modifiable, not just a constant.
[quoted text clipped - 121 lines]
>>>>
>>>> Regards
John Mott - 11 Aug 2007 21:04 GMT
> Thanks John, But it doesn't work!
>
[quoted text clipped - 19 lines]
>
> Regards

Make the Global class itself static, like this

public static class Global {
       public static string myString = "default";
}

Then you should be able to just refer to it without creating it with

Global.myString = "set me";

john

nice clean examples at www.nicecleanexamples.com
ma - 11 Aug 2007 21:09 GMT
Thanks.
Is there any other way to instantiate an object with application scope?
Regards

>> Thanks John, But it doesn't work!
>>
[quoted text clipped - 33 lines]
>
> nice clean examples at www.nicecleanexamples.com
John Mott - 11 Aug 2007 22:07 GMT
You can create a static member of the Application class (a static member can
be an object that can be modified, it doesn't have to be read-only). That
was my first idea but you didn't want a static variable. You may have
thought from that context that static meant 'readonly', it doesn't.

Does that help?

here's a link as well:

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607

john

> Thanks.
> Is there any other way to instantiate an object with application scope?
[quoted text clipped - 37 lines]
>>
>> nice clean examples at www.nicecleanexamples.com
Milosz Skalecki [MCAD] - 12 Aug 2007 00:36 GMT
Hi there,

Usually, when the class cannot be static and you require one global instance
of a class, singleton pattern should be used (this is thread safe variant):

public class Global
{
    private Global()
    {
    }
   
    private static object sync = new object();
    private static Global instance = null;
   
    public Global Instance
    {
        get
        {
            lock(sync)
            {
                if (instance == null)
                {
                    instance = new Global();
                }
            }
            return instance;
        }
    }
}

// usage
Global global = Global.Instance;

In addition, in ASP.NET there's build-in mechanism for such scenarios called
Application state (instance can be initialized in the Global.asax
Application_Start event) or Caching (you'd have to make sure race condition
is eliminated).

HTH
Signature

Milosz

> Thanks.
> Is there any other way to instantiate an object with application scope?
[quoted text clipped - 37 lines]
> >
> > nice clean examples at www.nicecleanexamples.com
ma - 12 Aug 2007 10:10 GMT
Thanks,
  Where can I read more about application instance or caching? Any good
tutorial on the web?

Regards

> Hi there,
>
[quoted text clipped - 82 lines]
>> >
>> > nice clean examples at www.nicecleanexamples.com
Milosz Skalecki [MCAD] - 12 Aug 2007 12:22 GMT
Hi,

There are many tutorials out there, ie:
http://samples.gotdotnet.com/quickstart/aspplus/doc/stateoverview.aspx
Google is your friend

Regards
Signature

Milosz

> Thanks,
>    Where can I read more about application instance or caching? Any good
[quoted text clipped - 88 lines]
> >> >
> >> > nice clean examples at www.nicecleanexamples.com

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.