Freigeben über


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

  1. Erstellen Sie eine XsdDataContractExporter-Instanz.

  2. 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 XmlSchemaSet zu starten.

  3. 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.

  4. Rufen Sie eine der Export-Methoden auf. Es sind drei Überladungen vorhanden, die einen Type, eine List mit Type-Objekten oder eine List 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 demselben XmlSchemaSet hinzugefügt werden. Ein Typ wird nicht für den XmlSchemaSet generiert, wenn er darin bereits vorhanden ist. Aus diesem Grund ist das mehrfache Aufrufen von Export für denselben XsdDataContractExporter besser als das Erstellen mehrerer Instanzen der XsdDataContractExporter-Klasse. So wird vermieden, dass doppelte Schematypen generiert werden.

    Tipp

    Wenn beim Exportieren ein Fehler auftritt, befindet sich der XmlSchemaSet in einem unvorhersehbaren Zustand.

  5. 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 in Datenverträgen.) Diese bekannten Typen werden bei jedem Export-Aufruf zusätzlich zu den Typen exportiert, die an die Export-Methode übergeben werden.
  • 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 Methode NULL 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 bestimmten Type darstellt.

Exportoptionen wirken sich auf all diese Methoden aus.

Siehe auch

Referenz

DataContractSerializer
XsdDataContractImporter
XsdDataContractExporter

Konzepte

Import und Export von Schemas
Importieren von Schemas zum Generieren von Klassen