在我的项目中,我想使用T4生成我的枚举。为了测试这个,我用一个简单的表单创建了一个测试项目。在这个项目中,我添加了一个.tt文件并将我的代码放入该文件中。
一切正常,但我有点失望。我认为当项目执行时,T4会生成枚举。因此,枚举始终是最新的。但事实并非如此,对吧?如果要更新枚举,则必须手动执行此操作并重建解决方案。我的问题是,我在这一个方面是否正确?或者我错过了什么。
其次,我为什么要用T4创建一个枚举?我的意思是如果枚举更改我必须重建我的解决方案。
编辑: 我从数据库表中获取我的枚举值。该表只有2个字段:Id和Description
答案 0 :(得分:2)
说实话,我不相信这是值得的。您仍然需要返回并更新代码以处理任何新值。您可以做的最好的事情是确保您的switch语句有一个默认大小写。
switch (enumValue)
{
// ...
default:
throw new InvalidOperationException(
"The enum value " + enumValue + " is unhandled."
);
}
答案 1 :(得分:2)
enum
等价物如果你的表改变了它的价值,现在成为enum
真的不是一个好的竞争者吗? C#枚举往往是静态定义的,除非有合理的原因,否则不会改变。当他们这样做时,代码必须采用此更改来使用其他值。
因此,如果您的应用程序能够更改表的内容,那么这只是一个常用的表。
但是如果你想要一个通用的T4模板实际上确实使用XML文档生成枚举,而且我已经付出了一些努力来编写这样的模板。 this blog post中记录了所有内容。包括模板的代码。
答案 2 :(得分:0)
这是一篇关于另一个方向的文章(从SQL视图生成一个c#enum)
http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration/
答案 3 :(得分:0)
PLINQO能够很容易地从一个表生成枚举,但是你会遇到LINQ-TO-SQL。如果你只需要生成的枚举就足够好了!