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 XmlSchemaSetzu 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 Instanz der XsdDataContractExporter.

  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 XmlSchemaSetzu 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<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 demselben XmlSchemaSethinzugefü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.

    Hinweis

    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 des Datenvertrags.) Diese bekannten Typen werden bei jedem Export-Aufruf zusätzlich zu den an die Export-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 Methode nullzurü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 Typedarstellt.

Exportoptionen wirken sich auf all diese Methoden aus.

Siehe auch