Поделиться через


Экспорт схем из классов

Чтобы создать схемы языка определения схемы XML (XSD) из классов, используемых в модели контракта данных, используйте класс XsdDataContractExporter . В данном разделе описывается процесс создания схем.

Процесс экспорта

Процесс экспорта схемы начинается с одного или нескольких типов, что приводит к созданию класса XmlSchemaSet , описывающего XML-проекцию этих типов.

Это XmlSchemaSet часть объектной модели схемы платформа .NET Framework (SOM), представляющая набор документов схемы XSD. Чтобы создать документы XSD из класса XmlSchemaSet, используйте коллекцию схем из свойства Schemas класса XmlSchemaSet . Затем сериализуйте каждый объект XmlSchema с помощью сериализатора XmlSerializer.

Экспорт схем

  1. Создайте экземпляр XsdDataContractExporter.

  2. Необязательно. Передайте объект XmlSchemaSet в конструктор. В этом случае схема, созданная во время экспорта схемы, добавляется в этот экземпляр класса XmlSchemaSet вместо создания нового пустого экземпляра класса XmlSchemaSet.

  3. Необязательно. Вызовите один из методов CanExport. Этот метод определяет, можно ли экспортировать заданный тип. Этот метод имеет те же перегрузки, что метод Export в следующем шаге.

  4. Вызовите один из методов Export. Существует три перегрузки, получающие Typeи List<T> объектов Type или List<T> объектов Assembly . В последнем случае, экспортируются все типы во всех указанных сборках.

    При нескольких вызовах метода Export в один и тот же объект XmlSchemaSetдобавляется несколько типов. Тип не создается в объекте XmlSchemaSet , если он уже имеется в нем. Следовательно, рекомендуется вызывать метод Export несколько раз в одном и том же классе XsdDataContractExporter , а не создавать несколько экземпляров класса XsdDataContractExporter . Это помогает избежать создания повторяющихся типов схем.

    Примечание.

    В случае сбоя при экспорте объект XmlSchemaSet будет находиться в непредсказуемом состоянии.

  5. Для доступа к объекту XmlSchemaSet используется свойство Schemas .

Параметры экспорта

Можно присвоить свойство Options объекта XsdDataContractExporter экземпляру класса ExportOptions для управления различными аспектами процесса экспорта. В частности, можно задать следующие параметры.

  • KnownTypes. В этой коллекции Type представлены известные типы для экспортируемых типов. (Дополнительные сведения см. в разделе Известные типы контракта данных.) Эти известные типы экспортируются при каждом Export вызове в дополнение к типам, передаваемым методу Export .

  • DataContractSurrogate. С помощью этого свойства можно указать IDataContractSurrogate для настройки процесса экспорта. Дополнительные сведения см. в статье "Суррогаты контракта данных". По умолчанию суррогат не используется.

Вспомогательные методы

Помимо выполнения основной задачи, заключающейся в экспорте схемы, экспортер XsdDataContractExporter предлагает несколько полезных вспомогательных методов, предоставляющих сведения о типах. Например:

  • Метод GetRootElementName. Этот метод принимает Type и возвращает имя XmlQualifiedName , представляющее имя и пространство имен корневого элемента, которые бы использовались, если бы этот тип был сериализован как корневой объект.

  • Метод GetSchemaTypeName. Этот метод принимает Type и возвращает имя XmlQualifiedName , представляющее имя типа схемы XSD, которое бы использовалось, если бы этот тип был экспортирован в схему. В случае типов IXmlSerializable , представленных как анонимные типы в схеме, этот метод возвращает значение null.

  • Метод GetSchemaType. Этот метод работает только с типами IXmlSerializable , представленными как анонимные типы в схеме, и возвращает значение null для всех других типов. В случае анонимных типов этот метод возвращает тип XmlSchemaType , представляющий данный Type.

Параметры экспорта влияют на все эти методы.

См. также