Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 XmlSchemaSet
zu 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
Erstellen Sie eine Instanz des XsdDataContractExporter.
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.
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.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 demselbenXmlSchemaSet
Element mehrere Elemente hinzugefügt werden. Ein Typ wird nicht in dasXmlSchemaSet
generiert, wenn er dort bereits vorhanden ist. Daher ist es vorzuziehen,Export
mehrmals auf das gleicheXsdDataContractExporter
anzuwenden, anstatt mehrere Instanzen derXsdDataContractExporter
-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.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 dieExport
Methode übergebenen Typen für jedenExport
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ücknull
.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 bestimmtenType
Wert darstellt.
Exportoptionen wirken sich auf alle diese Methoden aus.