從類別匯出結構描述
如果要從用於資料合約模型中的類別產生 XML 結構描述定義語言 (XSD),請使用 XsdDataContractExporter 類別。 這個主題將說明建立結構描述的程序。
匯出程序
結構描述匯出程序是以一個或多個類型開始,然後產生描述這些類型的 XML 規劃的 XmlSchemaSet 。
XmlSchemaSet
涵蓋於 .NET Framework 結構描述物件模型 (SOM)。該模型代表一組 XSD 結構描述文件。 如果要從 XmlSchemaSet
建立 XSD 文件,請使用來自 Schemas 類別之 XmlSchemaSet
屬性的結構描述集合。 然後使用 XmlSchema 序列化各個 XmlSerializer物件。
匯出結構描述
建立 XsdDataContractExporter的執行個體。
選擇性。 在建構函式中傳遞 XmlSchemaSet 。 在這種情況下,在結構描述匯出期間產生的結構描述會新增至這個 XmlSchemaSet 執行個體,而不是從空白的 XmlSchemaSet開始。
選擇性。 呼叫其中一個 CanExport 方法。 此方法會判斷是否可以匯出指定的類型。 此方法的多載和下一個步驟中的
Export
方法相同。呼叫其中一個 Export 方法。 有三種多載採用 Type、 List<T> 物件的
Type
或 List<T> 物件的 Assembly 。 在最後一種情況中,會匯出所有指定組件中的所有類型。Export
方法的多個呼叫會造成將多個項目新增至相同的XmlSchemaSet
。 如果型別已經存在,便不會產生至XmlSchemaSet
中。 因此,如果要建立Export
類別的多個執行個體,會偏好在相同的XsdDataContractExporter
上呼叫多次XsdDataContractExporter
。 如此可避免產生重複的結構描述型別。注意
如果在匯出期間有失敗,
XmlSchemaSet
將會處於不能預測的狀態。請透過 XmlSchemaSet 屬性存取 Schemas 。
匯出選項
您可以將 Options 之 XsdDataContractExporter 屬性設定為 ExportOptions 類別的執行個體,以控制匯出處理程序的各方面。 特別是,您可以設定下列選項:
KnownTypes.
Type
的這個集合代表正在匯出之型別的已知型別 (如需詳細資訊,請參閱資料合約已知型別)。除了傳遞至Export
方法的型別之外,還會在每次呼叫Export
時匯出這些已知型別。DataContractSurrogate. IDataContractSurrogate 可以透過將會自訂匯出程序的這個屬性來提供。 如需詳細資訊,請參閱資料合約代理。 根據預設,不會使用 Surrogate。
Helper 方法
除了匯出結構描述的主要角色之外, XsdDataContractExporter
還提供數種有用的 Helper 方法,提供有關型別的資訊。 包括:
GetRootElementName 方法。 這個方法會採用
Type
並傳回 XmlQualifiedName ,代表如果將這個型別序列化為根物件,會使用的根項目名稱和命名空間。GetSchemaTypeName 方法。 這個方法會採用
Type
並傳回 XmlQualifiedName ,代表如果將這個型別匯出至結構描述,會使用的 XSD 結構描述型別的名稱。 對於在結構描述中表示為匿名型別的 IXmlSerializable 型別,這個方法會傳回null
。GetSchemaType 方法。 這個方法只能使用在結構描述中表示為匿名型別的 IXmlSerializable 型別,並為所有其他的型別傳回
null
。 對於匿名型別,這個方法會傳回代表指定 XmlSchemaType 的Type
。
匯出選項會影響所有這些方法。