I got a little sidetracked with a problem due to an assumption. What I am doing is returning a proxy to an object to my client. I started to think what would happen across my serialization boundary.
I assumed that the serializer would access all the properties and send their values across the wire to be reconstituted on the other side. Well, I was wrong. What serialization will do is serialize all the private fields and move those across the wire and then repopulate all the fields on the other side (via reflection). This is clearly obvious now as if it access the properties and the get/set property modified data in some way upon access (usually a bad code practice I know) then the act of serializing and deserializing an object would actually change values.
So for those who always wanted to know… serialization just takes the fields and serializes those (if those fields are objects it will serialize the child object as well) and then reconstitutes it on the other side.