Создание файлов класса MULTIPLE на основе XSD
Возможно, я пытаюсь сделать что-то, что невозможно с помощью инструмента XSD, но я хотел спросить, прежде чем перейти к более простому решению.
У меня есть XSD-файл, который имеет несколько элементов (и несколько сложных типов), которые будут генерировать несколько классов в одном файле кода (мне это не нравится). Чтобы иметь чистые и читаемые файлы классов, сгенерированные из инструмента XSD, я бы хотел, чтобы каждый элемент был помещен в отдельный файл кода, а не все были помещены в один файл кода как частичные классы.
Кто-нибудь знает как это сделать? Или мое единственное решение - разбить XSD на одну схему для каждого из элементов xml в схеме?
Статья MSDN http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx не предоставляет язык, который определяет, можно ли это сделать.
Заранее спасибо за любые ответы или комментарии.
2 ответа
Это не отвечает на ваш вопрос напрямую, но я хотел выбросить пару вещей:
Я обычно считаю непродуктивным разделять сгенерированный код. Мне всегда нравится следовать правилу "один класс на файл", но я делаю здесь исключение, потому что я часто имею дело с очень большими схемами. Даже в их собственном каталоге я не хочу, чтобы при создании новой версии кода мне приходилось различать десятки (до сотен) файлов. Я нахожу очень удобным иметь весь сгенерированный код в одном файле.
Теперь, чтобы предложить возможное решение - Resharper имеет возможность извлечь все классы из файла и поместить их в свои собственные файлы. Если щелкнуть правой кнопкой мыши файл в обозревателе решений, вы можете сказать " Рефакторинг" → " Переместить типы в соответствующие файлы...". Конечно, это не так удобно, как просто генерировать его таким образом, но я не знаю инструмента, который это сделает.
Проблема, которую я пытаюсь решить, была либо в отдельных файлах классов, либо в единичных, но уникальных классах, а не в одном пространстве имен, содержащем несколько классов. В результате я искал похожий ответ и нашел эту ссылку, чтобы поделиться Получение xsd.exe, чтобы не создавать дублирующиеся классы
Это простое исправление, но мне потребовалось много времени, чтобы понять. Вы должны использовать xsd.exe для компиляции всех ваших классов одновременно, поэтому вместо запуска двух отдельных команд вам нужно просто выполнить одну: C:\Solution\Project>xsd.exe Types.xsd Request.xsd Response.xsd /c Теперь у вас есть один файл Response.xsd со всеми тремя классами.