Esportazione di schemi da classi
Per generare schemi XSD (XML Schema Definition Language) dalle classi usate nel modello del contratto dati, usare la classe XsdDataContractExporter . In questo argomento viene illustrato il processo di creazione degli schemi.
Processo di esportazione
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.
La classe XmlSchemaSet
fa parte del modello SOM (Schema Object Model) di .NET Framework che rappresenta un set di documenti dello schema XSD. Per creare documenti XSD da una classe XmlSchemaSet
, usare la raccolta di schemi dalla proprietà Schemas della classe XmlSchemaSet
. Quindi serializzare ogni oggetto XmlSchema usando XmlSerializer.
Per esportare gli schemi
Creare un'istanza di XsdDataContractExporter.
Facoltativo. Passare una classe XmlSchemaSet nel costruttore. 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.
Facoltativo. Chiamare uno dei metodi CanExport. Il metodo determina se il tipo specificato può essere esportato. Il metodo presenta gli stessi overload del metodo
Export
nel passaggio successivo.Chiamare uno dei metodi Export. Sono disponibili tre overload che accettano un Type, un List<T> di oggetti
Type
o un List<T> di oggetti Assembly . Nell'ultimo caso, tutti i tipi degli assembly specificati vengono esportati.Più chiamate al metodo
Export
determinano l'aggiunta di più elementi alla stessa classeXmlSchemaSet
. Se esiste già un tipo inXmlSchemaSet
, non ne viene generato un altro. Pertanto, è preferibile eseguire più chiamate aExport
sulla stessa classeXsdDataContractExporter
rispetto alla creazione di più istanze della classeXsdDataContractExporter
. In questo modo non vengono generati tipi di schema duplicati.Nota
Se si verifica un errore durante l'esportazione, lo stato della classe
XmlSchemaSet
sarà imprevedibile.Accedere a XmlSchemaSet mediante la proprietà Schemas .
Opzioni di esportazione
È possibile impostare la proprietà Options di XsdDataContractExporter su un'istanza della classe ExportOptions per controllare vari aspetti del processo di esportazione. In particolare, è possibile impostare le opzioni seguenti:
KnownTypes. Questa raccolta di
Type
rappresenta i tipi noti per i tipi da esportare. Per altre informazioni, vedere Tipi noti del contratto dati. Questi tipi noti vengono esportati con ogni chiamata aExport
in aggiunta ai tipi passati al metodoExport
.DataContractSurrogate. Un'interfaccia IDataContractSurrogate può essere fornita tramite questa proprietà per personalizzare il processo di esportazione. Per altre informazioni, vedere Surrogati del contratto dati. Per impostazione predefinita, non viene usato alcun surrogato.
Metodi helper
Oltre al ruolo principale di esportare gli schemi, XsdDataContractExporter
fornisce molti utili metodi helper che forniscono informazioni sui tipi. tra cui:
MetodoGetRootElementName . 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.MetodoGetSchemaTypeName . 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. Per i tipi IXmlSerializable rappresentati come tipi anonimi nello schema, questo metodo restituiscenull
.MetodoGetSchemaType . Questo metodo funziona solo con i tipi IXmlSerializable rappresentati come tipi anonimi nello schema e restituisce
null
per tutti gli altri tipi. Per i tipi anonimi, questo metodo restituisce un XmlSchemaType che rappresenta un determinatoType
.
Le opzioni di esportazione influiscono su tutti questi metodi.