By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
432,101 Members | 1,416 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 432,101 IT Pros & Developers. It's quick & easy.

global class (simple question!)

P: n/a
ma
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


Aug 11 '07 #1
Share this Question
Share on Google+
10 Replies


P: n/a
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" <ma@nowhere.comwrote in message
news:uz**************@TK2MSFTNGP06.phx.gbl...
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


Aug 11 '07 #2

P: n/a
ma
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" <jo********@hotmail.comwrote in message
news:el**************@TK2MSFTNGP03.phx.gbl...
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" <ma@nowhere.comwrote in message
news:uz**************@TK2MSFTNGP06.phx.gbl...
>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



Aug 11 '07 #3

P: n/a
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" <ma@nowhere.comwrote in message
news:OF**************@TK2MSFTNGP04.phx.gbl...
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" <jo********@hotmail.comwrote in message
news:el**************@TK2MSFTNGP03.phx.gbl...
>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" <ma@nowhere.comwrote in message
news:uz**************@TK2MSFTNGP06.phx.gbl...
>>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




Aug 11 '07 #4

P: n/a
ma
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" <jo********@hotmail.comwrote in message
news:%2****************@TK2MSFTNGP06.phx.gbl...
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" <ma@nowhere.comwrote in message
news:OF**************@TK2MSFTNGP04.phx.gbl...
>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" <jo********@hotmail.comwrote in message
news:el**************@TK2MSFTNGP03.phx.gbl...
>>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" <ma@nowhere.comwrote in message
news:uz**************@TK2MSFTNGP06.phx.gbl...
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






Aug 11 '07 #5

P: n/a

"ma" <ma@nowhere.comwrote in message
news:Oo**************@TK2MSFTNGP06.phx.gbl...
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
Aug 11 '07 #6

P: n/a
ma
Thanks.
Is there any other way to instantiate an object with application scope?
Regards

"John Mott" <jo********@hotmail.comwrote in message
news:Ok**************@TK2MSFTNGP03.phx.gbl...
>
"ma" <ma@nowhere.comwrote in message
news:Oo**************@TK2MSFTNGP06.phx.gbl...
>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

Aug 11 '07 #7

P: n/a
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" <ma@nowhere.comwrote in message
news:%2****************@TK2MSFTNGP04.phx.gbl...
Thanks.
Is there any other way to instantiate an object with application scope?
Regards

"John Mott" <jo********@hotmail.comwrote in message
news:Ok**************@TK2MSFTNGP03.phx.gbl...
>>
"ma" <ma@nowhere.comwrote in message
news:Oo**************@TK2MSFTNGP06.phx.gbl...
>>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


Aug 11 '07 #8

P: n/a
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" <jo********@hotmail.comwrote in message
news:Ok**************@TK2MSFTNGP03.phx.gbl...

"ma" <ma@nowhere.comwrote in message
news:Oo**************@TK2MSFTNGP06.phx.gbl...
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


Aug 11 '07 #9

P: n/a
ma
Thanks,
Where can I read more about application instance or caching? Any good
tutorial on the web?

Regards

"Milosz Skalecki [MCAD]" <mi*****@DONTLIKESPAMwp.plwrote in message
news:00**********************************@microsof t.com...
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" <jo********@hotmail.comwrote in message
news:Ok**************@TK2MSFTNGP03.phx.gbl...
>
"ma" <ma@nowhere.comwrote in message
news:Oo**************@TK2MSFTNGP06.phx.gbl...
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



Aug 12 '07 #10

P: n/a
Hi,

There are many tutorials out there, ie:
http://samples.gotdotnet.com/quickst...eoverview.aspx
Google is your friend

Regards
--
Milosz
"ma" wrote:
Thanks,
Where can I read more about application instance or caching? Any good
tutorial on the web?

Regards

"Milosz Skalecki [MCAD]" <mi*****@DONTLIKESPAMwp.plwrote in message
news:00**********************************@microsof t.com...
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" <jo********@hotmail.comwrote in message
news:Ok**************@TK2MSFTNGP03.phx.gbl...

"ma" <ma@nowhere.comwrote in message
news:Oo**************@TK2MSFTNGP06.phx.gbl...
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



Aug 12 '07 #11

This discussion thread is closed

Replies have been disabled for this discussion.