Serialization
When an
object
is streamed to disk, its various member data must be
serialized— that is, written out to the
stream as a series of bytes. The object will also be serialized when
stored in a database or when marshaled across a context, app domain,
process, or machine boundary.
The CLR provides support for serializing an
object-graph—
an object and all the member
data of that object. As noted in Chapter 19, by
default types are not serialized; to serialize an object, you must
explicitly mark it with the [Serializable]
attribute.
In either case, the CLR will do the work of serializing your object for you. Because the CLR knows how to serialize all the primitive types, if your object consists of nothing but primitive types (all your member data consists of integers, longs, strings, etc.), you’re all set. If your object consists of other user-defined types (classes), you must ensure that these types are also serializable. The CLR will try to serialize each object contained by your object (and all their contained objects as well), but these objects themselves must either be primitive types or they must be serializable.
This was also evident in Chapter 19 when you
marshaled a Shape object that contained a
Point object as member data. The
Point object in turn consisted of primitive data.
In order to serialize (and thus marshal) the Shape
object, its constituent member, the Point object,
also had to be marked as serializable.
Tip
When an object is marshaled, either by value ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access