Exportation de schémas à partir de classes
Pour générer des schémas XSD (Schema definition language) à partir des classes utilisées dans le modèle de contrat de données, utilisez la classe XsdDataContractExporter . Cette rubrique décrit le processus de création de schémas.
Processus d'exportation
Le processus d'exportation de schéma démarre avec un ou plusieurs types et produit un XmlSchemaSet qui décrit la projection XML de ces types.
XmlSchemaSet
fait partie du modèle d’objet de schéma de .NET Framework qui représente un ensemble de documents de schéma XSD. Pour créer des documents XSD à partir d'un XmlSchemaSet
, utilisez la collection de schémas de la propriété Schemas de la classe XmlSchemaSet
. Puis sérialisez chaque objet XmlSchema à l'aide du XmlSerializer.
Pour exporter des schémas
Créez une instance de XsdDataContractExporter.
facultatif. Passez un XmlSchemaSet dans le constructeur. Dans ce cas, le schéma généré pendant l'exportation de schéma est ajouté à cette instance XmlSchemaSet au lieu de démarrer avec un XmlSchemaSetvide.
facultatif. Appelez une des méthodes CanExport. La méthode détermine si le type spécifié peut être exporté. La méthode a les mêmes surcharges que la méthode
Export
dans l'étape suivante.Appelez une des méthodes Export. Il y a trois surcharges qui prennent un Type, un List<T> d'objets
Type
, ou un List<T> d'objets Assembly . Dans le dernier cas, tous les types dans tous les assemblys donnés sont exportés.Plusieurs appels à la méthode
Export
entraînent l'ajout de plusieurs éléments au mêmeXmlSchemaSet
. Un type n'est pas généré dans leXmlSchemaSet
s'il est déjà présent. Par conséquent, il est préférable d'appelerExport
plusieurs fois sur le mêmeXsdDataContractExporter
que de créer plusieurs instances de la classeXsdDataContractExporter
. Cela évite de générer plusieurs types de schémas en double.Notes
En cas de défaillance pendant l'exportation, le
XmlSchemaSet
sera dans un état imprévisible.Accédez à XmlSchemaSet à l'aide de la propriété Schemas .
Options d'exportation
Vous pouvez définir la propriété Options de XsdDataContractExporter avec une instance de la classe ExportOptions pour contrôler divers aspects du processus d'exportation. Spécifiquement, vous pouvez définir les options suivantes :
KnownTypes. Cette collection de
Type
représente les types connus pour les types qui sont exportés. (Pour plus d’informations, consultez Types connus de contrat de données.) Ces types connus sont exportés sur chaque appelExport
en plus des types transmis à la méthodeExport
.DataContractSurrogate. Un IDataContractSurrogate peut être fourni par l'intermédiaire de cette propriété qui personnalisera le processus d'exportation. Pour plus d’informations, consultez Substituts de contrats de données. Par défaut, aucun substitut n'est utilisé.
Méthodes d'assistance
En plus de son rôle principal chargé d'exporter le schéma, le XsdDataContractExporter
offre plusieurs méthodes d'assistance utiles qui fournissent des informations relatives aux types. Il s’agit notamment des paramètres suivants :
MéthodeGetRootElementName . Cette méthode prend un
Type
et retourne un XmlQualifiedName qui représente le nom d'élément racine et l'espace de noms qui seraient utilisés si ce type était sérialisé comme objet racine.MéthodeGetSchemaTypeName . Cette méthode prend un
Type
et retourne un XmlQualifiedName qui représente le nom du type de schéma XSD qui serait utilisé si ce type était exporté dans le schéma. Pour les types IXmlSerializable représentés comme types anonymes dans le schéma, cette méthode retournenull
.MéthodeGetSchemaType . Cette méthode fonctionne uniquement avec les types IXmlSerializable représentés comme types anonymes dans le schéma et retourne
null
pour tous les autres types. Pour les types anonymes, cette méthode retourne un XmlSchemaType qui représente unType
donné.
Les options d'exportation affectent toutes ces méthodes.