Генерация кода C#

Когда я добавляю command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci'] в docker-compose.yml

utf8 in MySQL

После того, как я это сделал, символы Emoji, кажется, работают .

7
задан Dave Swersky 16 October 2009 в 16:05
поделиться

3 ответа

Ответы на Ваш вопрос зависят частично от цели Ваших сгенерированных классов.

Если классы сгенерированы как часть разработки, они должны быть сгенерированы как текстовые файлы и зарегистрированы Ваш SCM как любой другой класс.

Если бы Ваши классы сгенерированы динамично во времени выполнения как часть операции Вашей системы, я не использовал бы CodeDOM вообще. Я использовал бы Отражение.

0
ответ дан 7 December 2019 в 05:30
поделиться

Смотрите на шаблоны T4 (это встроено к VS2008). Это позволяет Вам создавать "шаблонные" классы, которые генерируют код для Вас. Oleg Sych является неоценимым ресурсом для этого.

Ссылка для учебного руководства Oleg на генерации кода.

8
ответ дан 7 December 2019 в 05:30
поделиться

Я знаю о наличии шаблонов T4 (и знаю, что многие люди их используют), но сам я ими не пользовался. Помимо этого, у вас есть два основных варианта:

  1. Используйте SingleFileGenerator для преобразования исходного кода прямо внутри проекта. Всякий раз, когда вы сохраняете редактируемый документ, он автоматически восстанавливает файл кода. Если вы используете систему контроля версий, созданный файл будет возвращен как часть проекта. У этого есть несколько ограничений:
    • Вы можете сгенерировать только один вывод для каждого ввода.
    • Поскольку вы не можете контролировать порядок, в котором файлы генерируются, и файлы не генерируются во время сборки, ваш вывод может быть эффективно получен только из одного входной файл.
    • Генератор отдельных файлов должен быть установлен на машине разработчика , если они планируют редактировать входной файл . Так как сгенерированный код находится в системе управления версиями, если они не редактируют ввод, им не нужно регенерировать вывод.
    • Поскольку вывод создается только при сохранении ввода, вывод не должен зависеть от любое состояние, кроме точного содержимого входного файла (даже системные часы).
  2. Генерировать код как часть сборки. Для этого вы пишете целевой файл MSBuild. Для этого, у вас есть полный контроль над вводом (ами) и выводом (ами), поэтому зависимости могут быть обработаны. При необходимости состояние системы можно рассматривать как входную зависимость, но помните, что каждая сборка, требующая генерации кода, занимает больше времени, чем сборка, которая использует ранее созданный результат. Результаты (сгенерированные исходные файлы) обычно помещаются в каталог obj и добавляются к списку входных данных, идущих в csc (компилятор C #). Ограничения этого метода: Результаты (сгенерированные исходные файлы) обычно помещаются в каталог obj и добавляются к списку входных данных, идущих в csc (компилятор C #). Ограничения этого метода: Результаты (сгенерированные исходные файлы) обычно помещаются в каталог obj и добавляются к списку входных данных, идущих в csc (компилятор C #). Ограничения этого метода:
    • Труднее написать целевой файл, чем SingleFileGenerator.
    • Сборка зависит от генерации выходных данных, независимо от того, будет ли пользователь редактировать входные данные.
    • Поскольку сгенерированный код не является частью проекта , немного сложнее просмотреть сгенерированный код для таких вещей, как установка точек останова.
0
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

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