TypeCodeDomSerializer.Serialize Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Serializes the object root by creating a new type declaration that defines root.
public:
virtual System::CodeDom::CodeTypeDeclaration ^ Serialize(System::ComponentModel::Design::Serialization::IDesignerSerializationManager ^ manager, System::Object ^ root, System::Collections::ICollection ^ members);
public virtual System.CodeDom.CodeTypeDeclaration Serialize (System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager, object root, System.Collections.ICollection members);
public virtual System.CodeDom.CodeTypeDeclaration Serialize (System.ComponentModel.Design.Serialization.IDesignerSerializationManager manager, object root, System.Collections.ICollection? members);
abstract member Serialize : System.ComponentModel.Design.Serialization.IDesignerSerializationManager * obj * System.Collections.ICollection -> System.CodeDom.CodeTypeDeclaration
override this.Serialize : System.ComponentModel.Design.Serialization.IDesignerSerializationManager * obj * System.Collections.ICollection -> System.CodeDom.CodeTypeDeclaration
Public Overridable Function Serialize (manager As IDesignerSerializationManager, root As Object, members As ICollection) As CodeTypeDeclaration
Parameters
- manager
- IDesignerSerializationManager
The serialization manager to use for serialization.
- root
- Object
The object to serialize.
- members
- ICollection
Optional collection of members. Can be null
or empty.
Returns
A CodeTypeDeclaration that defines the root object.
Exceptions
manager
or root
is null
.
Remarks
The Serialize method serializes the given root object and optional collection of members to create a new type definition. If the members
collection contains values, these values are serialized. Values themselves may serialize as either member variables or local variables. This determination is done by searching for an extender property on the object called GenerateMember
. If true
, a member is generated. Otherwise, a local variable is generated. For convenience, the members
collection can contain the root object. In this case, the root object is not also added as a member or local variable.
The name of the returned type is taken from the root object's name, if it was a named object. If not, a name is fabricated from the simple type name of the root class.
The following table shows the tasks performed by the default implementation of the Serialize method.
Task | Description |
---|---|
Context Seeding | The serialization context is initialized with data including the RootContext and CodeTypeDeclaration |
Member Serialization | Next, Serialize walks all of the members and calls SerializeToExpression. Because serialization is done opportunistically in SerializeToExpression, this ensures that serialization is not done twice. |
Root Serialization | Next, the root object is serialized and its statements are added to the statement collection. |
Statement Integration | After all objects are serialized, the Serialize method orders the statements and adds them to a method returned from GetInitializeMethod. Finally, a constructor is fabricated that calls all of the methods returned from GetInitializeMethod. |
-
The following table shows the objects the Serialize method places on the context stack.
Instance | Description |
---|---|
TypeCodeDomSerializer | This serializer. Deriving classes may find it useful to add public properties to this class. |
CodeTypeDeclaration | The type being created. Most objects do not need direct access to this. |