So I had Dim object2 as objecttype = object1 in my code, thinking it would create a copy of object 1. However, I soon realized that changing something in object 1 after this declaration, was changing things in object 2. So, I realized, with the assistance of this oh-so-helpful tutorial on Cloning in VB.net, that I needed to make a deep copy by implementing Icloneable on my class. That's fine, I'll do that, and then I'll map all the variables within the clone function like the example shows. The problem I have with that, is what if I add a variable to my class later? I'd have to remember to map it in this clone function.
While I'm at it, let me throw this out there: NHibernate helps you persist objects right? Back in the day I tried persisting my object to the DB by serializing all the variables to XML and storing the XML in the DB. The same problem happened there -- if I add a variable/field to the class, then there might be different versions of the XML stored in the DB, and retrieving that XML and converting it back into an object entered me into a whole new world of hurt never before experienced. So I dropped that like a bad habit. So tell me, is NHibernate the holy grail? If I sip from the NHibernate cup, is it going to give me everlasting youth? (Or, at the very least, does it handle versioning somehow as I've just described it?). Let those who extoll the virtues of NHibernate make their mark herein.