Esportazione di schemi dalle classiExporting Schemas from Classes

Per generare schemi XSD (XML Schema Definition Language) dalle classi usate nel modello del contratto dati, usare la classe XsdDataContractExporter .To generate XML Schema definition language (XSD) schemas from classes that are used in the data contract model, use the XsdDataContractExporter class. In questo argomento viene illustrato il processo di creazione degli schemi.This topic describes the process for creating schemas.

Processo di esportazioneThe Export Process

Il processo di esportazione degli schemi ha inizio con uno o più tipi e produce una classe XmlSchemaSet che descrive la proiezione XML di questi tipi.The schema export process starts with one or more types and produces an XmlSchemaSet that describes the XML projection of these types.

La classe XmlSchemaSet fa parte del modello SOM (Schema Object Model) di .NET Framework.NET Framework che rappresenta un set di documenti dello schema XSD.The XmlSchemaSet is part of the .NET Framework.NET Framework’s Schema Object Model (SOM) that represents a set of XSD Schema documents. Per creare documenti XSD da una classe XmlSchemaSet, usare la raccolta di schemi dalla proprietà Schemas della classe XmlSchemaSet .To create XSD documents from an XmlSchemaSet, use the collection of schemas from the Schemas property of the XmlSchemaSet class. Quindi serializzare ogni oggetto XmlSchema usando XmlSerializer.Then serialize each XmlSchema object using the XmlSerializer.

Per esportare gli schemiTo export schemas

  1. Creare un'istanza di XsdDataContractExporter.Create an instance of the XsdDataContractExporter.

  2. Parametro facoltativo.Optional. Passare una classe XmlSchemaSet nel costruttore.Pass an XmlSchemaSet in the constructor. In questo caso, lo schema generato durante l'esportazione dello schema viene aggiunto a questa istanza di XmlSchemaSet anziché iniziare con un'istanza di XmlSchemaSetvuota.In this case, the schema generated during the schema export is added to this XmlSchemaSet instance instead of starting with a blank XmlSchemaSet.

  3. Parametro facoltativo.Optional. Chiamare uno dei metodi CanExport .Call one of the CanExport methods. Il metodo determina se il tipo specificato può essere esportato.The method determines whether the specified type can be exported. Il metodo presenta gli stessi overload del metodo Export nel passaggio successivo.The method has the same overloads as the Export method in the next step.

  4. Chiamare uno dei metodi Export .Call one of the Export methods. Sono disponibili tre overload che accettano un Type, un List<T> di oggetti Type o un List<T> di oggetti Assembly .There are three overloads taking a Type, a List<T> of Type objects, or a List<T> of Assembly objects. Nell'ultimo caso, tutti i tipi degli assembly specificati vengono esportati.In the last case, all types in all the given assemblies are exported.

    Più chiamate al metodo Export determinano l'aggiunta di più elementi alla stessa classe XmlSchemaSet.Multiple calls to the Export method results in multiple items being added to the same XmlSchemaSet. Se esiste già un tipo in XmlSchemaSet , non ne viene generato un altro.A type is not generated into the XmlSchemaSet if it already exists there. Pertanto, è preferibile eseguire più chiamate a Export sulla stessa classe XsdDataContractExporter rispetto alla creazione di più istanze della classe XsdDataContractExporter .Therefore, calling Export multiple times on the same XsdDataContractExporter is preferable to creating multiple instances of the XsdDataContractExporter class. In questo modo non vengono generati tipi di schema duplicati.This avoids duplicate schema types from being generated.

    Nota

    Se si verifica un errore durante l'esportazione, lo stato della classe XmlSchemaSet sarà imprevedibile.If there is a failure during export, the XmlSchemaSet will be in an unpredictable state.

  5. Accedere a XmlSchemaSet mediante la proprietà Schemas .Access the XmlSchemaSet through the Schemas property.

Opzioni di esportazioneExport Options

È possibile impostare la proprietà Options di XsdDataContractExporter su un'istanza della classe ExportOptions per controllare vari aspetti del processo di esportazione.You can set the Options property of the XsdDataContractExporter to an instance of the ExportOptions class to control various aspects of the export process. In particolare, è possibile impostare le opzioni seguenti:Specifically, you can set the following options:

Metodi helperHelper Methods

Oltre al ruolo principale di esportare gli schemi, XsdDataContractExporter fornisce molti utili metodi helper che forniscono informazioni sui tipi.In addition to its primary role of exporting schema, the XsdDataContractExporter provides several useful helper methods that provide information about types. tra cui:These include:

  • MetodoGetRootElementName .GetRootElementName method. Questo metodo accetta un Type e restituisce un XmlQualifiedName che rappresenta il nome e lo spazio dei nomi dell'elemento principale che verrebbero usati se questo tipo venisse serializzato come oggetto principale.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.

  • MetodoGetSchemaTypeName .GetSchemaTypeName method. Questo metodo accetta un Type e restituisce un XmlQualifiedName che rappresenta il nome dello schema XSD che verrebbe usato se questo tipo venisse esportato nello schema.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. Per i tipi IXmlSerializable rappresentati come tipi anonimi nello schema, questo metodo restituisce null.For IXmlSerializable types represented as anonymous types in the schema, this method returns null.

  • MetodoGetSchemaType .GetSchemaType method. Questo metodo funziona solo con i tipi IXmlSerializable rappresentati come tipi anonimi nello schema e restituisce null per tutti gli altri tipi.This method works only with IXmlSerializable types that are represented as anonymous types in the schema, and returns null for all other types. Per i tipi anonimi, questo metodo restituisce un XmlSchemaType che rappresenta un determinato Type.For anonymous types, this method returns an XmlSchemaType that represents a given Type.

Le opzioni di esportazione influiscono su tutti questi metodi.Export options affect all of these methods.

Vedere ancheSee Also

DataContractSerializer
XsdDataContractImporter
XsdDataContractExporter
Importazione ed esportazione di schemiSchema Import and Export
Importazione dello schema per generare classiImporting Schema to Generate Classes