Генерация кода в Visual Studio - как бороться с разработчиками, редактирующими файлы классов - PullRequest
3 голосов
/ 12 июля 2010

Итак, благодаря Пакету функций визуализации и моделирования , я могу построить диаграмму модели uml и создать группу классов.

Но что теперь?Предположительно, мои разработчики добавят код в эти классы.Полезный код, ценный код и, как указывают сами шаблоны:

//     Changes to this file will be lost if the code is regenerated.

Так что же является лучшим решением здесь?Могу ли я сделать так, чтобы проект моделирования отражал изменения в реальных классах?Должен ли я генерировать частичные классы?Изменить шаблоны по умолчанию для чтения файлов классов и не создавать автоматически что-либо, что было изменено?Должен ли я сказать разработчикам не редактировать файлы моделей под страхом… ну, боль?

Спасибо за советы.

Ответы [ 4 ]

5 голосов
/ 12 июля 2010

Насколько я знаю, это действительно главная причина частичных занятий. Пользовательский код помещается в один файл, а автоматически генерируется в другом.

2 голосов
/ 12 июля 2010

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

0 голосов
/ 07 августа 2010

В инструменте есть несколько вариантов, и рекомендовать то, что лучше, сложно, не зная вашего сценария.Частичные классы отлично подходят для некоторых, но не для всех приложений.Если вы хотите, чтобы ваш класс UML генерировал частичный класс, вы можете установить для его свойства стереотипа C # значение «Частичное», и это будет сделано, и пользовательский код можно добавить в частичный класс, который не будет перезаписан.Если вы хотите предотвратить перезапись кода, вы можете сделать это, установив для свойства overwrite значение False в привязке шаблона, соответствующей пакету, над которым вы работаете.Это позволяет вам установить код расширения в пакет, который не перезаписывается, в то время как код, освоенный вашей моделью, перезаписывается с последними изменениями модели.Наконец, если вы хотите, чтобы ваш код был основным для вашей модели, чтобы он всегда отражал последний код, вы можете выполнить обратный инжиниринг своего кода, используя проводник архитектуры, чтобы выбрать ваши классы, а затем перетащить их в диаграмму UML.Таким образом, для данного жеста либо модель является мастером, либо код является мастером.В этой версии мы не реализовали возможности автоматического слияния между ними.

0 голосов
/ 07 августа 2010

Хотя инструменты генерируют базовые классы скелета из коробки, это действительно только отправная точка. Вы можете легко адаптировать шаблоны генератора для создания своих собственных вещей. Разные люди хотят генерировать разный код из классов - некоторые даже генерируют XML или SQL. И да, в C # частичные классы хороши для генерации, поэтому нужно хранить рукописный код отдельно от сгенерированных битов. В сгенерированный код полезно помещать множество точек расширения, где вы вводите детали вручную. Еще одна изящная идея - «двойной производный»: из каждого класса UML сгенерируйте базовый класс и производный класс. Производный имеет только конструкторы. Базовый класс имеет любые методы, которые вы генерируете. Таким образом, ваш ручной код может легко переопределить сгенерированные методы там, где вам это нужно.

...