Salakhetdinov Shamil
mcp2004 at mail.ru
Wed Apr 25 13:58:03 CDT 2012
Yes, John, You can also use an abstract base class as you don't need it to be instantiated and an abstract base method to make sure it will be redefined/overridden in a derived class... Thank you. -- Shamil Wed, 25 Apr 2012 13:11:26 -0400 от jwcolby <jwcolby at colbyconsulting.com>: > Thanks Shamil. > > I created the base property virtual and then used the override keyword on the derived classes and > the framework automatically figured it out for me. > > John W. Colby > Colby Consulting > > Reality is what refuses to go away > when you do not believe in it > > On 4/25/2012 12:54 PM, Salakhetdinov Shamil wrote: > > Hi John -- > > > > Quick& Dirty: > > > > if (lstClsSQLFlagGridUpdate[gridValues.pFieldName] is clsFlagDte) > > { > > .... > > } > > else if (lstClsSQLFlagGridUpdate[gridValues.pFieldName] is clsFlagInt) > > { > > ... > > } > > > > As usual there should be many other (more elegant) (and OOP) ways to achieve the same results... > > > > Thank you. > > > > -- Shamil > > > > > > Wed, 25 Apr 2012 09:17:42 -0400 от jwcolby<jwcolby at colbyconsulting.com>: > >> > >> I have a dictionary which is typed to clsFlag > >> > >> private Dictionary<string, clsFlag> lstClsSQLFlagGridUpdate = new Dictionary<string, clsFlag>(); > >> > >> In my program I never actually instantiate clsFlag but rather derived classes which inherit clsFlag > >> and use its functionality. So I am actually instantiating and storing clsFlagDte, clsFlagInt etc. > >> > >> In all other regards this seems to be working well. When I read a flag out I simply cast the flag > >> to its real type and off I go. However there is one specific place in my code where the code does > >> not know the type and thus leaves it as an object: > >> > >> public void mGridUpdate(clsGridValues gridValues) > >> { > >> lstClsSQLFlagGridUpdate[gridValues.pFieldName].pValue = gridValues.pValue; > >> } > >> > >> IOW lstClsSQLFlagGridUpdate[gridValues.pFieldName] is a pointer to an object in the list, and that > >> object is *not* clsFlag. > >> > >> However in this case the .pValue is calling pValue in the base class which is not what I intend. > >> .PValue in the base class doesn't do anything. > >> > >> So basically I need to discover what subclass type is in the list and get an instance of that > >> subclass (a pointer to the object in the list cast to the correct type), then update pValue of that > >> pointed to object. > >> > >> I have no idea how to do that. I could do something klutzy like creating a "type variable" in each > >> subclass and set that to the correct type in the constructor, and then in the method above use a > >> switch to cast based on that "type variable" but that seems ugly. > >> > >> Is there some syntax to tell this thing to call the pValue method in the subclass instead of the > >> base object? > >> > >> -- > >> John W. Colby > >> Colby Consulting > >> > >> Reality is what refuses to go away > >> when you do not believe in it > >> > >> _______________________________________________ > >> dba-VB mailing list > >> dba-VB at databaseadvisors.com > >> http://databaseadvisors.com/mailman/listinfo/dba-vb > >> http://www.databaseadvisors.com > >> > >> > > > > _______________________________________________ > > dba-VB mailing list > > dba-VB at databaseadvisors.com > > http://databaseadvisors.com/mailman/listinfo/dba-vb > > http://www.databaseadvisors.com > > > >