Класс System.Runtime.Serialization.XsdDataContractExporter
В этой статье приводятся дополнительные замечания к справочной документации по этому API.
Если была создана веб-служба, которая добавляет данные, представленные типами среды CLR, и требуется экспортировать схемы XML для каждого типа, используемого другими веб-службами, используйте класс XsdDataContractExporter. Таким образом, XsdDataContractExporter преобразует набор типов среды CLR в схемы XML. (Дополнительные сведения о типах, которые можно использовать, см. в разделе Типы, поддерживаемые сериализатором контракта данных.) Затем схемы можно предоставлять с помощью документа языка описания веб-служб (WSDL) для использования другими пользователями, которые должны взаимодействовать со службой.
И наоборот, при создании веб-службы, которая должна будет взаимодействовать с существующей службой, используйте XsdDataContractImporter для преобразования схем XML и создания типов среды CLR, представляющих данные в выбранном языке программирования.
XsdDataContractExporter создает объект XmlSchemaSet, содержащий коллекцию схем. Доступ к набору схем осуществляется через свойство Schemas().
Примечание.
Для быстрого создания файлов определения схемы XML (файлов XSD), которые могут использовать другие веб-службы, используйте XsdDataContractExporter.
Экспорт схем в XmlSchemaSet
Для создания экземпляра класса XmlSchemaSet, содержащего файлы схемы XML, необходимо знать следующее.
Набор экспортируемых типов записывается как внутренний набор контрактов данных. Таким образом, можно вызвать метод CanExport несколько раз, чтобы добавить новые типы в набор схем; это не снизит производительность, так как в набор будут добавлены только новые типы. При выполнении операции Export существующие схемы сравниваются с добавляемыми новыми схемами. При возникновении конфликтов будет выдано исключение. Обычно конфликт возникает, когда два типа с одним и тем же именем контракта данных, но разными контрактами (разными элементами), экспортируются одним и тем же экземпляром XsdDataContractExporter.
Использование экспортера
Рекомендуется использовать этот класс следующим образом.