Exportieren von Schemas aus Klassen
Verwenden Sie die XsdDataContractExporter -Klasse, um XML-XSD-Schemas (Schema Definition Language) aus Klassen zu generieren, die im Datenvertragsmodell verwendet werden. In diesem Thema ist das Verfahren zum Erstellen von Schemas beschrieben.
Der Exportprozess
Der Prozess zum Exportieren von Schemas beginnt mit einem oder mehreren Typen, und es wird ein XmlSchemaSet erstellt, der die XML-Projektion dieser Typen beschreibt.
Der XmlSchemaSet
ist Teil des SOM (Schemaobjektmodell) von .NET Framework. Das SOM stellt einen Satz von XSD-Schemadokumenten dar. Um XSD-Dokumente aus einem XmlSchemaSet
zu erstellen, verwenden Sie die Schemaauflistung aus der Schemas -Eigenschaft der XmlSchemaSet
-Klasse. Serialisieren Sie dann jedes XmlSchema -Objekt mit dem XmlSerializer.
So exportieren Sie Schemas
Erstellen Sie eine Instanz der XsdDataContractExporter.
Optional. Übergeben Sie im Konstruktor einen XmlSchemaSet . In diesem Fall wird das während des Schemaexports generierte Schema dieser XmlSchemaSet -Instanz hinzugefügt, anstatt mit einem leeren XmlSchemaSetzu starten.
Optional. Rufen Sie eine der CanExport-Methoden auf. Die Methode bestimmt, ob der angegebene Typ exportiert werden kann. Die Methode verfügt über dieselben Überladungen wie die
Export
-Methode im nächsten Schritt.Rufen Sie eine der Export-Methoden auf. Es sind drei Überladungen vorhanden, die einen Type, eine List<T> mit
Type
-Objekten oder eine List<T> mit Assembly -Objekten erfordern. Im letzten Fall werden alle Typen in allen jeweiligen Assemblys exportiert.Mehrere Aufrufe der
Export
-Methode führen dazu, dass mehrere Elemente demselbenXmlSchemaSet
hinzugefügt werden. Ein Typ wird nicht für denXmlSchemaSet
generiert, wenn er darin bereits vorhanden ist. Aus diesem Grund ist das mehrfache Aufrufen vonExport
für denselbenXsdDataContractExporter
besser als das Erstellen mehrerer Instanzen derXsdDataContractExporter
-Klasse. So wird vermieden, dass doppelte Schematypen generiert werden.Hinweis
Wenn beim Exportieren ein Fehler auftritt, befindet sich der
XmlSchemaSet
in einem unvorhersehbaren Zustand.Greifen Sie auf die XmlSchemaSet mithilfe der Schemas -Eigenschaft zu.
Exportoptionen
Sie können die Options -Eigenschaft des XsdDataContractExporter auf eine Instanz der ExportOptions -Klasse festlegen, um verschiedene Aspekte des Exportprozesses zu steuern. Dabei können Sie die folgenden Optionen festlegen:
KnownTypes. Diese
Type
-Auflistung stellt die bekannten Typen für die zu exportierenden Typen dar. (Weitere Informationen finden Sie unter Bekannte Typen des Datenvertrags.) Diese bekannten Typen werden bei jedemExport
-Aufruf zusätzlich zu den an dieExport
-Methode übergebenen Typen exportiert.DataContractSurrogate. Über diese Eigenschaft kann auch ein IDataContractSurrogate -Element übergeben werden, das den Exportprozess anpasst. Weitere Informationen finden Sie unter Datenvertrag-Ersatzzeichen. Standardmäßig wird kein Ersatzzeichen verwendet.
Hilfsmethoden
Zusätzlich zu seiner Hauptaufgabe, dem Exportieren des Schemas, bietet XsdDataContractExporter
auch mehrere nützliche Hilfsmethoden, die Informationen zu Typen liefern. Dazu gehören:
GetRootElementName -Methode. Diese Methode verwendet einen
Type
und gibt einen XmlQualifiedName zurück, der den Stammelementnamen und den Namespace darstellt, der genutzt wird, wenn dieser Typ als Stammobjekt serialisiert wird.GetSchemaTypeName -Methode. Diese Methode verwendet einen
Type
und gibt einen XmlQualifiedName zurück, der den Namen des XSD-Schematyps darstellt, der beim Exportieren dieses Typs genutzt wird. Für IXmlSerializable -Typen, die im Schema als anonyme Typen dargestellt werden, gibt diese Methodenull
zurück.GetSchemaType -Methode. Diese Methode funktioniert nur in Verbindung mit IXmlSerializable -Typen, die im Schema als anonyme Typen dargestellt werden, und gibt für alle anderen Typen
null
zurück. Für anonyme Typen gibt diese Methode einen XmlSchemaType zurück, der einen bestimmtenType
darstellt.
Exportoptionen wirken sich auf all diese Methoden aus.