Partilhar via


Exportando esquemas de classes

Para gerar esquemas XSD (linguagem de definição de esquema XML) a partir de classes usadas no modelo de contrato de dados, use a XsdDataContractExporter classe. 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.

O XmlSchemaSet é parte do Schema Object Model (SOM) do .NET Framework que representa um conjunto de documentos de esquema XSD. Para criar documentos XSD a partir de um XmlSchemaSet, use a coleção de esquemas da Schemas propriedade da XmlSchemaSet classe. Em seguida, serialize cada XmlSchema objeto usando o XmlSerializer.

Para exportar esquemas

  1. Crie uma instância de XsdDataContractExporter.

  2. Opcional. Passe um XmlSchemaSet no construtor. Nesse caso, o esquema gerado durante a exportação do esquema é adicionado a esta XmlSchemaSet instância em vez de começar com um arquivo em branco XmlSchemaSet.

  3. Opcional. Chame um dos CanExport métodos. O método determina se o tipo especificado pode ser exportado. O método tem as mesmas sobrecargas que o Export método na próxima etapa.

  4. Chame um dos Export métodos. Há três sobrecargas tomando 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 fornecidos são exportados.

    Várias chamadas para o Export método resultam em vários itens sendo adicionados ao mesmo XmlSchemaSet. Um tipo não é gerado no XmlSchemaSet se ele já existe lá. Portanto, chamar Export várias vezes no mesmo XsdDataContractExporter é preferível a criar várias instâncias da XsdDataContractExporter classe. Isso evita que tipos de esquema duplicados sejam gerados.

    Nota

    Se houver uma falha durante a exportação, o XmlSchemaSet estará em um estado imprevisível.

  5. Aceda através XmlSchemaSet da Schemas propriedade.

Opções de exportação

Você pode definir a Options propriedade do XsdDataContractExporter como uma instância da ExportOptions classe para controlar vários aspetos do processo de exportação. Especificamente, você pode definir as seguintes opções:

  • KnownTypes. Esta coleção de Type representa os tipos conhecidos para os tipos que estão sendo exportados. (Para obter mais informações, consulte Tipos conhecidos de contrato de dados.) Esses tipos conhecidos são exportados em cada Export chamada, além dos tipos passados para o Export método.

  • DataContractSurrogate. Um IDataContractSurrogate pode ser fornecido através desta propriedade que irá personalizar o processo de exportação. Para obter mais informações, consulte Substitutos de contrato de dados. Por padrão, nenhum substituto é usado.

Métodos auxiliares

Além de sua função principal de exportar o esquema, o XsdDataContractExporter fornece vários métodos auxiliares úteis que fornecem informações sobre tipos. Estes são, entre outros:

  • GetRootElementName método. Esse método usa um Type e retorna um XmlQualifiedName que representa o nome do elemento raiz e namespace que seria usado se esse tipo fosse serializado como o objeto raiz.

  • GetSchemaTypeName método. 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 IXmlSerializable tipos representados como tipos anônimos no esquema, esse método retorna null.

  • GetSchemaType método. Esse método funciona apenas com IXmlSerializable tipos 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 dado Type.

As opções de exportação afetam todos esses métodos.

Consulte também