Visual Studio代码生成 - 如何处理开发人员编辑类文件

时间:2010-07-12 18:49:59

标签: visual-studio-2010 code-generation uml

感谢Visualization and Modeling Feature Pack,我可以构建一个uml模型图并生成一堆类。

但现在呢?据推测,我的开发人员将为这些类添加代码。有用的代码,有价值的代码,以及模板本身表明:

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

那么这里最好的解决方案是什么?我可以让建模项目反映实际类的变化吗?我应该生成部分课吗?修改默认模板以读取类文件而不是自动生成已修改的任何内容?我应该告诉开发人员在痛苦的情况下不要编辑模型文件吗?好吧,痛苦?

感谢您的提示。

4 个答案:

答案 0 :(得分:5)

据我所知,这确实是部分课程的关键原因。自定义代码放在一个文件中,自动生成在另一个文件中。

答案 1 :(得分:2)

您还可以创建从生成的类派生的类,并在其中进行任何更改。我也同意上面的海报,即部分课程可能是最佳选择。

答案 2 :(得分:0)

虽然这些工具可以立即生成基本的骨架类,但这只是一个起点。您可以轻松地调整生成器模板以创建自己的东西。不同的人希望从类中生成不同的代码 - 有些甚至生成XML或SQL。是的,在C#中,部分类很好生成,所以要保持手写代码与生成的位分开。 在生成的代码中放置大量扩展点是很好的,您可以通过手动代码填写详细信息。 另一个巧妙的想法是“双重派生”:从每个UML类中,生成一个基类和一个派生类。派生的只有构造函数。基类具有您生成的任何方法。因此,您的手动代码可以轻松覆盖您需要的生成方法。

答案 3 :(得分:0)

该工具中有多个选项,并且在不了解您的场景的情况下推荐最好的选项。部分类对某些应用程序很有用,但不是所有应用程序都很好如果你希望你的UML类生成一个局部类,你可以将它的C#stereotype属性设置为“Partial”,它会这样做,然后可以在一个不会被覆盖的局部类中添加自定义代码。如果要防止代码被覆盖,可以通过在与您正在处理的包对应的模板绑定上将overwrite属性设置为False来执行此操作。这使您可以将扩展代码设置为未覆盖的包,而模型主控代码将被最新的模型更改覆盖。最后,如果您希望代码成为模型的主代码,以便它始终反映最新代码,那么您可以使用体系结构资源管理器选择类,然后将它们拖入UML图中,对代码进行反向工程。因此,对于给定的手势,模型是主模型或代码是主模型。在这个版本中,我们没有在两者之间实现自动合并功能。