Freigeben über


Exportieren von Schemas aus Klassen

Verwenden Sie die XsdDataContractExporter Klasse, um XML-Schemadefinitionssprachenschemas (XSD) aus Klassen zu generieren, die im Datenvertragsmodell verwendet werden. In diesem Thema wird der Prozess zum Erstellen von Schemas beschrieben.

Der Exportprozess

Der Schemaexportprozess beginnt mit einem oder mehreren Typen und erzeugt einen XmlSchemaSet , der die XML-Projektion dieser Typen beschreibt.

Dies XmlSchemaSet ist Teil des Schemaobjektmodells von .NET Framework (SOM), das eine Gruppe von XSD-Schemadokumenten darstellt. Um XSD-Dokumente aus einem XmlSchemaSetzu erstellen, verwenden Sie die Schemaauflistung aus der Schemas -Eigenschaft der XmlSchemaSet -Klasse. Serialisieren Sie dann jedes XmlSchema Objekt mithilfe der XmlSerializer.

So exportieren Sie Schemas

  1. Erstellen Sie eine Instanz des XsdDataContractExporter.

  2. Wahlfrei. Ü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 beginnen.

  3. Wahlfrei. Rufen Sie eine der CanExport-Methoden auf. Die Methode bestimmt, ob der angegebene Typ exportiert werden kann. Die Methode hat die gleichen Ü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 angegebenen Assemblys exportiert.

    Mehrere Aufrufe der Export Methode führen dazu, dass demselben XmlSchemaSetElement mehrere Elemente hinzugefügt werden. Ein Typ wird nicht in das XmlSchemaSet generiert, wenn er dort bereits vorhanden ist. Daher ist es vorzuziehen, Export mehrmals auf das gleiche XsdDataContractExporter anzuwenden, anstatt mehrere Instanzen der XsdDataContractExporter-Klasse zu erstellen. Dadurch wird verhindert, dass doppelte Schematypen generiert werden.

    Hinweis

    Wenn während des Exports 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 der XsdDataContractExporter Klasse auf eine Instanz der ExportOptions Klasse festlegen, um verschiedene Aspekte des Exportprozesses zu steuern. Insbesondere können Sie die folgenden Optionen festlegen:

  • KnownTypes. Diese Auflistung von Type stellt die bekannten Typen für die zu exportierenden Typen dar. (Weitere Informationen finden Sie unter "Datenvertrag bekannte Typen".) Diese bekannten Typen werden zusätzlich zu den an die Export Methode übergebenen Typen für jeden Export Aufruf exportiert.

  • DataContractSurrogate. Eine IDataContractSurrogate kann über diese Eigenschaft bereitgestellt werden, die den Exportvorgang anpasst. Weitere Informationen finden Sie unter Data Contract Surrogates. Standardmäßig wird kein Ersatz verwendet.

Hilfsmethoden

Zusätzlich zu ihrer primären Rolle beim Exportieren des Schemas bietet dies XsdDataContractExporter mehrere nützliche Hilfsmethoden, die Informationen zu Typen bereitstellen. Dazu gehören:

  • GetRootElementName -Methode. Diese Methode nimmt einen Type an und gibt einen XmlQualifiedName zurück, der den Stammelementnamen und den Namespace darstellt, die verwendet würden, wenn dieser Typ als Stammobjekt serialisiert würde.

  • GetSchemaTypeName -Methode. Diese Methode nimmt ein Type und gibt ein XmlQualifiedName zurück, das den Namen des XSD-Schematyps darstellt, der verwendet würde, wenn dieser Typ in das Schema exportiert würde. Für IXmlSerializable Typen, die als anonyme Typen im Schema dargestellt werden, gibt diese Methode zurück null.

  • GetSchemaType -Methode. Diese Methode funktioniert nur mit IXmlSerializable Typen, die als anonyme Typen im Schema dargestellt werden und für alle anderen Typen zurückgegeben null werden. Bei anonymen Typen gibt diese Methode ein XmlSchemaType , das einen bestimmten TypeWert darstellt.

Exportoptionen wirken sich auf alle diese Methoden aus.

Siehe auch