TypeCodeDomSerializer.Serialize 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
透過建立定義 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);
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
參數
- manager
- IDesignerSerializationManager
用於序列化的序列化管理器。
- root
- Object
要串連的物件。
- members
- ICollection
成員可選擇集合。 可以是 null 或空的。
傳回
一個 CodeTypeDeclaration 定義根物件的
例外狀況
manager 或 root 為 null。
備註
該方法序列 Serialize 化給定的根物件及可選的成員集合,以建立新的型別定義。 如果集合包含 members 值,這些值會被序列化。 值本身可以序列化為成員變數或區域變數。 此判定是透過尋找物件 GenerateMember上的延伸性質來完成。 若 true,則產生一個成員。 否則,會產生一個局部變數。 為了方便起見, members 集合可以包含根物件。 此時,根物件不會同時作為成員或本地變數加入。
如果是命名物件,則回傳的類型名稱取自根物件的名稱。 若不行,則由根類別的簡單型別名稱合成名稱。
下表顯示了該方法預設實作 Serialize 所執行的任務。
| 任務 | 說明 |
|---|---|
| 情境播種 | 序列化上下文初始化時包含 和RootContextCodeTypeDeclaration |
| 成員連載 | 接著, Serialize 所有成員都走出來並打電話 SerializeToExpression。 由於序列化是在 中 SerializeToExpression機會性地完成,這確保序列化不會重複。 |
| 根序列化 | 接著,將根物件序列化,並將其語句加入語句集合。 |
| 語句積分 | 所有物件序列化後, Serialize 方法會排序這些語句,並將其加入從 返回的方法 GetInitializeMethod中。 最後,會製造一個構造子,呼叫所有從 返回的方法 GetInitializeMethod。 |
-
下表顯示該 Serialize 方法在上下文堆疊中放置的物件。
| Instance | 說明 |
|---|---|
| TypeCodeDomSerializer | 這個序列器。 衍生類別可能會發現在此類別中加入公共屬性很有用。 |
| CodeTypeDeclaration | 正在創造的類型。 大多數物件不需要直接存取這些資料。 |