For some reason I have a mental block about this and need some brainstorming to connect this in my head...I have 8 objects that inherit from the same class. They all have a routine that returns another class that acts basically just as a struct for thier return information.7 of the 8 objects will want to return a .NET DataSet as part of thier arguments, and the 8th will want to return a BinaryStream. (Lets call this part of the return argument struct the payload)The issue is, i dont want to have this (or some variant) everywhere in my code:If TypeOf _ReturnArgs.Payload Is DataSet ThenElseIf TypeOf _ReturnArgs.Payload Is BinaryStream ThenEnd IfThat seems to defeat the point of having all 8 inherit from the base class. Any thoughts?I am suffering the equivalent of writers block for programmers....If you need more background on what the classes do to help push through this, I can provide it.
6/25/2010 7:35:44 AM
i hate to turn down a good coding questionbut if you post this on stackoverflow.com you'll have several answers in less than a few minutesnot that there aren't hundreds of legitimate sites where you could ask this, including tww, but these days stackoverflow is the de facto option of programming questions[Edited on June 25, 2010 at 8:34 AM. Reason : .]
6/25/2010 8:29:46 AM
6/25/2010 9:35:33 AM
Thanks, I have it up there as well.I was hoping that this was just a case of me not seeing the obvious, but I am starting to get a little comfort from the fact that not a lot of good suggestions are popping up in the various places I have posted it.
6/25/2010 9:39:02 AM
yeah, i can't really think of much...except instead of doing the TypeOf stuff, just overload the methods.(or wait... that looks like VB... you're not using VB, are you? )
6/25/2010 10:18:43 AM
VB.NET, yes we are.If you knock it, you lose a little "programmer cred", imo.It's just as powerful as C#, and has its place just like many other languages. It's actually not my choice, and I initially turned my nose up at it like a lot of people do, but its the language our shop uses.
6/25/2010 10:31:25 AM
oh, i know, i'm just giving you shit.i tried it but couldn't get used to the lack of curly brackets and semicolons. everyone has their language of choice.[Edited on June 25, 2010 at 10:35 AM. Reason : FWIW, i was a complete and total .NET basher up until a month or so ago]
6/25/2010 10:33:39 AM
IMO the curly braces were a stupid choice for programming languages. Why not use square brackets so you don't have to have your finger on the shift key all the time?
6/25/2010 5:52:05 PM
Because, typically, curly and square brackets mean two different things. They have their uses, but yes, SHIFT gets old, I wish underscore didn't require it.
6/25/2010 5:58:10 PM
you guys know you can remap your keys, right?I think my solution would be abstract out the payload to be a generic object and then write a class to handle the two types of payloads.So instead of having that conditional everywhere you want to consume the payload it would instead be calling the payload class, passing the payload which will disambiguate it, parse it and return it as a single consumable (aka output ready char data).This may not work if depending on the overall architecture (I could see this maybe being a problem in MVC apps for instance, if you care about a strict architecture), but it should work to eliminate the redundant conditional everywhere.
6/25/2010 6:52:52 PM
Im getting ready to test my solution now.I am going to go ahead with bundling the tables up into a dataset just like the other sources would be.The library I have written already has classes that describe a "virtual db" so i can transfer db structure between machines, that I had forgotten about.Im just adding that to the return struct as part of the standard procedure. Thanks for listening to my question!
6/25/2010 7:20:22 PM
I was going to suggest if the logic is the same but you just need to convert from the dataset to/from the binary stream, override the method, change the data structure, and call the other method.Though data model consistency is your better bet.
6/27/2010 8:32:39 AM