Salakhetdinov Shamil
mcp2004 at mail.ru
Wed Apr 25 11:54:58 CDT 2012
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 > >