Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > global class (simple question!)

Reply
Thread Tools

global class (simple question!)

 
 
ma
Guest
Posts: n/a
 
      08-11-2007
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






 
Reply With Quote
 
 
 
 
John Mott
Guest
Posts: n/a
 
      08-11-2007
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


"ma" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
>
>
>
>
>
>



 
Reply With Quote
 
 
 
 
ma
Guest
Posts: n/a
 
      08-11-2007
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

"John Mott" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
>
>
> "ma" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> 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
>>
>>
>>
>>
>>
>>

>
>



 
Reply With Quote
 
John Mott
Guest
Posts: n/a
 
      08-11-2007
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




"ma" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
>
> "John Mott" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> 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
>>
>>
>> "ma" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>>> 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
>>>
>>>
>>>
>>>
>>>
>>>

>>
>>

>
>



 
Reply With Quote
 
ma
Guest
Posts: n/a
 
      08-11-2007
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




"John Mott" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> 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
>
>
>
>
> "ma" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> 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
>>
>> "John Mott" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>>> 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
>>>
>>>
>>> "ma" <(E-Mail Removed)> wrote in message
>>> news:(E-Mail Removed)...
>>>> 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
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>

>>
>>

>
>



 
Reply With Quote
 
John Mott
Guest
Posts: n/a
 
      08-11-2007

"ma" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
>


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


 
Reply With Quote
 
ma
Guest
Posts: n/a
 
      08-11-2007
Thanks.
Is there any other way to instantiate an object with application scope?
Regards



"John Mott" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
>
> "ma" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>> 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
>>

>
> 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
>



 
Reply With Quote
 
John Mott
Guest
Posts: n/a
 
      08-11-2007
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...;en-us;Q312607

john


"ma" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Thanks.
> Is there any other way to instantiate an object with application scope?
> Regards
>
>
>
> "John Mott" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>>
>> "ma" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>>> 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
>>>

>>
>> 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
>>

>
>



 
Reply With Quote
 
=?Utf-8?B?TWlsb3N6IFNrYWxlY2tpIFtNQ0FEXQ==?=
Guest
Posts: n/a
 
      08-11-2007
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
--
Milosz


"ma" wrote:

> Thanks.
> Is there any other way to instantiate an object with application scope?
> Regards
>
>
>
> "John Mott" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> >
> > "ma" <(E-Mail Removed)> wrote in message
> > news:(E-Mail Removed)...
> >> 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
> >>

> >
> > 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
> >

>
>
>

 
Reply With Quote
 
ma
Guest
Posts: n/a
 
      08-12-2007
Thanks,
Where can I read more about application instance or caching? Any good
tutorial on the web?

Regards

"Milosz Skalecki [MCAD]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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
> --
> Milosz
>
>
> "ma" wrote:
>
>> Thanks.
>> Is there any other way to instantiate an object with application scope?
>> Regards
>>
>>
>>
>> "John Mott" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>> >
>> > "ma" <(E-Mail Removed)> wrote in message
>> > news:(E-Mail Removed)...
>> >> 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
>> >>
>> >
>> > 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
>> >

>>
>>
>>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FWSM/PIX and Dynamic PAT using global IP range vs. global interface vs. global IP Hoffa Cisco 1 10-25-2006 06:50 PM
FWSM/PIX and Dynamic PAT using global IP range vs. global interface vs. global IP Hoffa Cisco 0 10-25-2006 01:04 PM
Class A contains class B, class B points to class A Joseph Turian C++ 5 12-30-2005 03:24 PM
Nested Class, Member Class, Inner Class, Local Class, Anonymous Class E11 Java 1 10-12-2005 03:34 PM
A parameterized class (i.e. template class / class template) is not a class? christopher diggins C++ 16 05-04-2005 12:26 AM



Advertisments