как сгенерировать классы с помощью xsd [duplicate]

Если вы не инициализировали ссылочный тип и хотите установить или прочитать одно из его свойств, он будет генерировать исключение NullReferenceException.

Пример:

Person p = null;
p.Name = "Harry"; // NullReferenceException occurs here.

Вы можно просто избежать этого, проверив, является ли переменная не нулевой:

Person p = null;
if (p!=null)
{
    p.Name = "Harry"; // Not going to run to this point
}

Чтобы полностью понять, почему выбрано исключение NullReferenceException, важно знать разницу между типами значений и ссылочные типы .

Итак, если вы имеете дело со типами значений, NullReferenceExceptions не может произойти. Хотя вам нужно поддерживать оповещение при работе со ссылочными типами!

Только ссылочные типы, как следует из названия, могут содержать ссылки или буквально буквально ничто (или «нуль»). Если типы значений всегда содержат значение.

Типы ссылок (эти должны быть проверены):

  • динамический
  • объект
  • string

Типы значений (вы можете просто игнорировать эти):

  • Числовые типы
  • Интегральные типы
  • Типы с плавающей запятой
  • decimal
  • bool
  • Пользовательские структуры

12
задан AndHeCodedIt 11 July 2011 в 19:31
поделиться

2 ответа

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

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

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

12
ответ дан Jon 24 August 2018 в 18:49
поделиться

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

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

3
ответ дан bluelightning1 24 August 2018 в 18:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: