Экспорт схем из классов
Чтобы создать схемы языка определения схемы XML (XSD) из классов, используемых в модели контракта данных, используйте класс XsdDataContractExporter . В данном разделе описывается процесс создания схем.
Процесс экспорта
Процесс экспорта схемы начинается с одного или нескольких типов, что приводит к созданию класса XmlSchemaSet , описывающего XML-проекцию этих типов.
Это XmlSchemaSet
часть объектной модели схемы платформа .NET Framework (SOM), представляющая набор документов схемы XSD. Чтобы создать документы XSD из класса XmlSchemaSet
, используйте коллекцию схем из свойства Schemas класса XmlSchemaSet
. Затем сериализуйте каждый объект XmlSchema с помощью сериализатора XmlSerializer.
Экспорт схем
Создайте экземпляр XsdDataContractExporter.
Необязательно. Передайте объект XmlSchemaSet в конструктор. В этом случае схема, созданная во время экспорта схемы, добавляется в этот экземпляр класса XmlSchemaSet вместо создания нового пустого экземпляра класса XmlSchemaSet.
Необязательно. Вызовите один из методов CanExport. Этот метод определяет, можно ли экспортировать заданный тип. Этот метод имеет те же перегрузки, что метод
Export
в следующем шаге.Вызовите один из методов Export. Существует три перегрузки, получающие Typeи List<T> объектов
Type
или List<T> объектов Assembly . В последнем случае, экспортируются все типы во всех указанных сборках.При нескольких вызовах метода
Export
в один и тот же объектXmlSchemaSet
добавляется несколько типов. Тип не создается в объектеXmlSchemaSet
, если он уже имеется в нем. Следовательно, рекомендуется вызывать методExport
несколько раз в одном и том же классеXsdDataContractExporter
, а не создавать несколько экземпляров классаXsdDataContractExporter
. Это помогает избежать создания повторяющихся типов схем.Примечание.
В случае сбоя при экспорте объект
XmlSchemaSet
будет находиться в непредсказуемом состоянии.Для доступа к объекту 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
.
Параметры экспорта влияют на все эти методы.