Visual Studio体系结构代码生成 – 创建列表而不是IEnumerable
是否可以在Visual Studio(2013)类图中配置关联,以便在从它生成代码时创建一个类型为List
的属性,甚至是ICollection
而不是默认的IEnumerable
?
是的,可以更改输出。 Visual Studio使用T4模板从Architecture工具生成代码。
您可以在C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Architecture Tools \ Extensibility \ Templates \ Text中找到模板(如果您有32位计算机,则删除(x86) ) 。
使用以下步骤将生成的代码更改为IList
而不是默认的IEnumerable
:
- 将所有模板备份到计算机上的其他目录(最好是安全而不是抱歉)
- 从上面的目录中打开CSharpHelper.t4
-
找到名为
ElementType(IType type, bool isEnumerable = false)
的方法ElementType(IType type, bool isEnumerable = false)
private static string ElementType(IType type, bool isEnumerable = false) { string text = string.Empty; if (type == null) { text = "object"; } else { text = TypeName(type); } if(!string.IsNullOrWhiteSpace(text) && isEnumerable) { //SO Change IEnumerable to IList here text = "IEnumerable<" + text + ">"; } return text; }
-
将字符串IEnumerable更改为您想要的任何内容(请参阅以SO开头的评论)
- 保存T4文件并从visual studio生成代码
您甚至可以编写自己的T4模板,并指示visual studio在生成代码时使用它们,有关MSDN的更多详细信息。