Exportando esquemas de classes
Para gerar esquemas XSD (linguagem de definição de esquema XML) de classes usadas no modelo de contrato de dados, use a classe XsdDataContractExporter. Este tópico descreve o processo de criação de esquemas.
O processo de exportação
O processo de exportação de esquema começa com um ou mais tipos e produz um XmlSchemaSet, que descreve a projeção XML desses tipos.
XmlSchemaSet
faz parte do SOM (Modelo de Objeto de Esquema) do .NET Framework que representa um conjunto de documentos de esquema XSD. Para criar documentos XSD de um XmlSchemaSet
, use a coleção de esquemas da propriedade Schemas da classe XmlSchemaSet
. Em seguida, serialize cada objeto XmlSchema usando o XmlSerializer.
Para exportar esquemas
Crie uma instância de XsdDataContractExporter.
Opcional. Passe um XmlSchemaSet no construtor. Nesse caso, o esquema gerado durante a exportação de esquema é adicionado à instância XmlSchemaSetem vez de começar com um XmlSchemaSet em branco.
Opcional. Chame um dos métodos CanExport. O método determina se o tipo especificado pode ser exportado. O método tem as mesmas sobrecargas que o método
Export
na próxima etapa.Chame um dos métodos Export. Há três sobrecargas que levam um Type, um List<T> de
Type
objetos ou um List<T> de Assembly objetos. No último caso, todos os tipos em todos os assemblies determinados são exportados.Várias chamadas do método
Export
resultam na adição de vários itens ao mesmoXmlSchemaSet
. Um tipo não é gerado noXmlSchemaSet
caso de ele já existir lá. Portanto, chamarExport
várias vezes no mesmoXsdDataContractExporter
é preferível para criar várias instâncias da classeXsdDataContractExporter
. Isso evita que tipos de esquema duplicados sejam gerados.Observação
Se houver uma falha durante a exportação, o
XmlSchemaSet
estará em um estado imprevisível.Acesse a propriedade XmlSchemaSet por meio da propriedade Schemas.
Opções de Exportação
Você pode definir a propriedade Options da instância XsdDataContractExporter para uma instância da classe ExportOptions, para controlar vários aspectos do processo de exportação. Especificamente, podem ser definidas as seguintes opções:
KnownTypes. Essa coleção de
Type
representa os tipos conhecidos para os tipos que estão sendo exportados. (Para obter mais informações, consulte Tipos conhecidos do contrato de dados). Esses tipos conhecidos são exportados em todas as chamadas deExport
, além dos tipos passados para o métodoExport
.DataContractSurrogate. Um IDataContractSurrogate pode ser fornecido por meio dessa propriedade que personalizará o processo de exportação. Para saber mais, confira Substitutos do contrato de dados. Por padrão, nenhum substituto é usado.
Métodos auxiliares
Além de sua função principal de exportar esquema, o XsdDataContractExporter
fornece vários métodos auxiliares úteis que fornecem informações sobre tipos. Estão incluídos:
Método GetRootElementName. Esse método usa um
Type
e retorna um XmlQualifiedName que representa o nome do elemento raiz e o namespace que seriam usados se esse tipo fosse serializado como o objeto raiz.Método GetSchemaTypeName. Esse método usa um
Type
e retorna um XmlQualifiedName que representa o nome do tipo de esquema XSD que seria usado se esse tipo fosse exportado para o esquema. Para tipos IXmlSerializable representados como tipos anônimos no esquema, esse método retornanull
.Método GetSchemaType. Esse método funciona apenas com tipos IXmlSerializable que são representados como tipos anônimos no esquema e retorna
null
para todos os outros tipos. Para tipos anônimos, esse método retorna um XmlSchemaType que representa um determinadoType
.
As opções de exportação afetam todos esses métodos.