The System.ComponentModel.Design.Serialization namespace provides types that support customization and control of serialization at design time.
The classes in this namespace can be divided into the following categories:
Serialization attributes that can be used to indicate the serializer to use for a specific type: DesignerSerializerAttribute, to indicate the serializer to use for a particular type; and RootDesignerSerializerAttribute, to indicate the base serializer to use for the root designer.
Classes that a designer can implement to customize serialization: IDesignerLoaderHost, for loading a designer document from a serialized state; and IDesignerLoaderService, for loading a designer document when external components and asynchronous loading are involved.
Interfaces that a designer can use to manage the serialization process: IDesignerSerializationManager, to register or retrieve custom serializers; IDesignerSerializationProvider, to make a serializer available to an IDesignerSerializationManager; and IDesignerSerializationService, which provides methods to invoke serialization and deserialization.
An interface that can be implemented to customize the loading process of a designer: DesignerLoader.
An interface that can be used to optimize the reloading of a designer: ICodeDomDesignerReload.
Other helper classes: INameCreationService, an interface for generating unique names for objects; ContextStack, a data structure useful for sharing serialization context information with serializers; and InstanceDescriptor, an object that can describe a serializable object.