Exportieren von Schemas aus KlassenExporting Schemas from Classes

Verwenden Sie die XsdDataContractExporter -Klasse, um XML-XSD-Schemas (Schema Definition Language) aus Klassen zu generieren, die im Datenvertragsmodell verwendet werden.To generate XML Schema definition language (XSD) schemas from classes that are used in the data contract model, use the XsdDataContractExporter class. In diesem Thema ist das Verfahren zum Erstellen von Schemas beschrieben.This topic describes the process for creating schemas.

Der ExportprozessThe Export Process

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.The schema export process starts with one or more types and produces an XmlSchemaSet that describes the XML projection of these types.

Der XmlSchemaSet ist Teil des SOM (Schemaobjektmodell) von .NET Framework.NET Framework. Das SOM stellt einen Satz von XSD-Schemadokumenten dar.The XmlSchemaSet is part of the .NET Framework.NET Framework’s Schema Object Model (SOM) that represents a set of XSD Schema documents. Um XSD-Dokumente aus einem XmlSchemaSetzu erstellen, verwenden Sie die Schemaauflistung aus der Schemas -Eigenschaft der XmlSchemaSet -Klasse.To create XSD documents from an XmlSchemaSet, use the collection of schemas from the Schemas property of the XmlSchemaSet class. Serialisieren Sie dann jedes XmlSchema -Objekt mit dem XmlSerializer.Then serialize each XmlSchema object using the XmlSerializer.

So exportieren Sie SchemasTo export schemas

  1. Erstellen Sie eine Instanz von XsdDataContractExporter.Create an instance of the XsdDataContractExporter.

  2. Dies ist optional.Optional. Übergeben Sie im Konstruktor einen XmlSchemaSet .Pass an XmlSchemaSet in the constructor. In diesem Fall wird das während des Schemaexports generierte Schema dieser XmlSchemaSet -Instanz hinzugefügt, anstatt mit einem leeren XmlSchemaSetzu starten.In this case, the schema generated during the schema export is added to this XmlSchemaSet instance instead of starting with a blank XmlSchemaSet.

  3. Dies ist optional.Optional. Rufen Sie eine der CanExport -Methoden auf.Call one of the CanExport methods. Die Methode bestimmt, ob der angegebene Typ exportiert werden kann.The method determines whether the specified type can be exported. Die Methode verfügt über dieselben Überladungen wie die Export -Methode im nächsten Schritt.The method has the same overloads as the Export method in the next step.

  4. Rufen Sie eine der Export -Methoden auf.Call one of the Export methods. Es sind drei Überladungen vorhanden, die einen Type, eine List<T> mit Type -Objekten oder eine List<T> mit Assembly -Objekten erfordern.There are three overloads taking a Type, a List<T> of Type objects, or a List<T> of Assembly objects. Im letzten Fall werden alle Typen in allen jeweiligen Assemblys exportiert.In the last case, all types in all the given assemblies are exported.

    Mehrere Aufrufe der Export -Methode führen dazu, dass mehrere Elemente demselben XmlSchemaSethinzugefügt werden.Multiple calls to the Export method results in multiple items being added to the same XmlSchemaSet. Ein Typ wird nicht für den XmlSchemaSet generiert, wenn er darin bereits vorhanden ist.A type is not generated into the XmlSchemaSet if it already exists there. Aus diesem Grund ist das mehrfache Aufrufen von Export für denselben XsdDataContractExporter besser als das Erstellen mehrerer Instanzen der XsdDataContractExporter -Klasse.Therefore, calling Export multiple times on the same XsdDataContractExporter is preferable to creating multiple instances of the XsdDataContractExporter class. So wird vermieden, dass doppelte Schematypen generiert werden.This avoids duplicate schema types from being generated.

    Hinweis

    Wenn beim Exportieren ein Fehler auftritt, befindet sich der XmlSchemaSet in einem unvorhersehbaren Zustand.If there is a failure during export, the XmlSchemaSet will be in an unpredictable state.

  5. Greifen Sie auf die XmlSchemaSet mithilfe der Schemas -Eigenschaft zu.Access the XmlSchemaSet through the Schemas property.

ExportoptionenExport Options

Sie können die Options -Eigenschaft des XsdDataContractExporter auf eine Instanz der ExportOptions -Klasse festlegen, um verschiedene Aspekte des Exportprozesses zu steuern.You can set the Options property of the XsdDataContractExporter to an instance of the ExportOptions class to control various aspects of the export process. Dabei können Sie die folgenden Optionen festlegen:Specifically, you can set the following options:

  • KnownTypes.KnownTypes. Diese Type -Auflistung stellt die bekannten Typen für die zu exportierenden Typen dar.This collection of Type represents the known types for the types being exported. (Weitere Informationen finden Sie unterFor more information, see 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.(Weitere Informationen finden Sie unterFor more information, see Data Contract Known Types.) These known types are exported on every Export call in addition to the types passed to the Export method.

  • DataContractSurrogateDataContractSurrogate. Über diese Eigenschaft kann auch ein IDataContractSurrogate -Element übergeben werden, das den Exportprozess anpasst.An IDataContractSurrogate can be supplied through this property that will customize the export process. Weitere Informationen finden Sie unterFor more information, seeDatenvertrag-Ersatzzeichen. Data Contract Surrogates. Standardmäßig wird kein Ersatzzeichen verwendet.By default, no surrogate is used.

HilfsmethodenHelper Methods

Zusätzlich zu seiner Hauptaufgabe, dem Exportieren des Schemas, bietet XsdDataContractExporter auch mehrere nützliche Hilfsmethoden, die Informationen zu Typen liefern.In addition to its primary role of exporting schema, the XsdDataContractExporter provides several useful helper methods that provide information about types. Dazu gehören:These include:

  • GetRootElementName -Methode.GetRootElementName method. 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.This method takes a Type and returns an XmlQualifiedName that represents the root element name and namespace that would be used if this type were serialized as the root object.

  • GetSchemaTypeName -Methode.GetSchemaTypeName method. 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.This method takes a Type and returns an XmlQualifiedName that represents the name of the XSD schema type that would be used if this type were exported to the schema. Für IXmlSerializable -Typen, die im Schema als anonyme Typen dargestellt werden, gibt diese Methode nullzurück.For IXmlSerializable types represented as anonymous types in the schema, this method returns null.

  • GetSchemaType -Methode.GetSchemaType method. 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.This method works only with IXmlSerializable types that are represented as anonymous types in the schema, and returns null for all other types. Für anonyme Typen gibt diese Methode einen XmlSchemaType zurück, der einen bestimmten Typedarstellt.For anonymous types, this method returns an XmlSchemaType that represents a given Type.

Exportoptionen wirken sich auf all diese Methoden aus.Export options affect all of these methods.

Siehe auchSee Also

DataContractSerializer
XsdDataContractImporter
XsdDataContractExporter
Import und Export von SchemasSchema Import and Export
Importieren von Schemas zum Generieren von KlassenImporting Schema to Generate Classes