Yes - that would be perfectly fine. Every class of mine will be a different <T>, so classes 1 and 3 *SHOULD* never occur - especially given they are code generated.
I have however just tried it with about 150 classes and events on the generic class - got a c# compiler error trying to reference the events. If I removed the events, the solution would compile, but not with the events - and they were half of the reason for changing to generics. So I've had to switch back to not using generics till I have time to resolve it - the bug report to MS was going to take 314 minutes which I didn't have time for. I might modify the code generator again tonight, see if I can get the same compiler error, and then just leave it overnight to file the report. Dino -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Peter Ritchie Sent: Tuesday, 21 February 2006 03:01 To: [email protected] Subject: Re: [ADVANCED-DOTNET] Statics on Generic classes Are you OK with the following:? class GenericBase<T> { public static int x; } class GenericClass1 : GenericBase<int> { } class GenericClass2 : GenericBase<decimal> { } class GenericClass3: GenericBase<int> { } //... GenericClass1.x = 5; GenericClass2.x = 10; GenericClass3.x = 15; String text; text.Format("{0} {1} {2}", new object[] {GenericClass1.x, GenericClass2.x, GenericClass3.x}); Debug.WriteLine(text); //eof ...which would output "15 10 15" not "5 10 15"? On Mon, 20 Feb 2006 17:30:04 +1300, Dean Cleaver <[EMAIL PROTECTED]> wrote: >Peter, > >Actually, now that you mention it I will see what I want. Basically, in >almost every class I have I have 2 static datasets containing a list of >all of the items in the database for that class - especially the likes >of a "Country" table where countries are not added regularly if ever, I >keep an in-memory copy of them for quick population of a combo box for >example. Saves on round-tripping to the db when on a VPN from a remote >office. > >So what I would be doing is GenericBase<x> and then GenericBase<y> etc >where every class will have a different generic type, which from what >you are saying will in fact give me my desired results, and a quick >test has proven that: > > >class GenericBase<T> >{ > public static int x; >} > >class GenericClass1 : GenericBase<int> >{ >} > >class GenericClass2 : GenericBase<decimal> { } > >And then ran this: > >GenericClass1.x = 5; >GenericClass2.x = 10; >MessageBox.Show(GenericClass1.x.ToString()); > >Returns 5 - meaning that I can define a Generic Base with static >members, and then define 150 classes from that each based on a >different type, and I will in effect have 150 individual sets of static >members, not 1 static member like I would have had with a normal >non-generic base class. I just made the mistake of creating 2 classes >of GenericBase<int>, which will share the static members. > >Much appreciated - I'd been looking at the code trying all sorts, but >never thought to change the type. > >Cheers, >Dino > >-----Original Message----- >From: Discussion of advanced .NET topics. >[mailto:[EMAIL PROTECTED] On Behalf Of Peter Ritchie >Sent: Monday, 20 February 2006 16:54 >To: [email protected] >Subject: Re: [ADVANCED-DOTNET] Statics on Generic classes > >Statics in generics don't operate any differently than non-generic >classes. They're basically globals that are scoped within a class. > >Generics are also not like unmanaged C++ templates; their body is not >copied (inlined) for each use. > >In your example, x is a member of GenericBase<int>. If you changed >your declaration of GenericClass2 to derive from GenericBase<Decimal> >(or any other type except int) then you'd see the results you expected, >but not what you want. > >If you're expecting a class declaration deriving from a generic to >operate like an instance (i.e. each class declaration have its own copy >of derived >statics) then you're out of luck. > >What were you hoping to accomplish? In case there's another way of >doing what you want. > >On Mon, 20 Feb 2006 15:43:36 +1300, Dean Cleaver ><[EMAIL PROTECTED]> wrote: > >>I just tried a test like this: >> >>class GenericBase<T> >>{ >> public static int x; >>} >> >>class GenericClass1 : GenericBase<int> { } >> >>class GenericClass2 : GenericBase<int> { } >> >>And then ran this: >> >>GenericClass1.x = 5; >>GenericClass2.x = 10; >>MessageBox.Show(GenericClass1.x.ToString()); >> >>To my disappointment, it displayed 10 not 5 as I had hoped - basically >>means that any statics on a Generic base are common to all derivations >>of that Generic class, not to each derived class - or is there another >>way to effect what I am trying to do? > >=================================== >This list is hosted by DevelopMentor(r) http://www.develop.com > >View archives and manage your subscription(s) at >http://discuss.develop.com > >=================================== >This list is hosted by DevelopMentor(r) http://www.develop.com > >View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor(r) http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com
