Подтвердить что ты не робот

Создание файлов MULTIPLE класса на основе XSD

Я могу попробовать что-то, что невозможно с помощью инструмента XSD, но я хотел спросить, прежде чем перейти к более простому решению.

У меня есть XSD файл с несколькими элементами (и несколькими сложными типами), которые будут генерировать несколько классов в одном файле кода (мне это не нравится). Для того, чтобы иметь чистые и читаемые файлы классов, созданные из инструмента XSD, я хотел бы, чтобы каждый элемент был помещен в отдельный файл кода, а не все, помещенные в один файл кода как частичные классы.

Кто-нибудь знает, как это сделать? Или мое единственное решение для этого, разбивающего XSD на одну схему для каждого из элементов xml в схеме?

В статье MSDN http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx не указан язык, который указывает, можно ли это сделать.

Заранее благодарим за любые ответы или комментарии.

4b9b3361

Ответ 1

Это не отвечает на ваш вопрос напрямую, но я хотел бросить пару вещей:

Я обычно считаю контрпродуктивным отдельный сгенерированный код. Мне всегда нравится, как правило, следовать правилу "один класс за файл", но здесь я делаю исключение, потому что часто имею дело с очень большими схемами. Даже в своем собственном каталоге, я не хочу, чтобы разделить десятки (до сотен) файлов, когда я создаю новую версию кода. Мне очень удобно иметь весь сгенерированный код, который может быть размытым в одном файле.

Теперь, чтобы предложить возможное решение - Resharper имеет возможность вытащить все классы из файла и поместить их в их собственные файлы. Если вы щелкните правой кнопкой мыши файл в проводнике решений, вы можете сказать, что Refactor → Переместить типы в соответствующие файлы.... Конечно, это isn 't где-то почти так же удобно, как просто генерировать его таким образом, но я не знаю, какой инструмент это сделает.

Ответ 2

Проблема, которую я пытаюсь решить, была либо в отдельных файлах классов, либо в одном уникальном, но уникальном классе, а не в том же пространстве имен, содержащем несколько классов. В результате я искал аналогичный ответ и нашел эту ссылку для обмена Получение xsd.exe Чтобы не создавать повторяющиеся классы

Это простое исправление, но мне потребовалось много времени, чтобы понять. Вы должны использовать xsd.exe для компиляции всех ваших классов сразу, поэтому вместо того, чтобы запускать две отдельные команды, вам просто нужно запустить один из них: C:\Solution\Project > xsd.exe Types.xsd Request.xsd Response.xsd/c Теперь у вас есть один файл Response.xsd со всеми тремя классами в нем.