【发布时间】:2014-06-28 20:06:50
【问题描述】:
是否可以在 Visual Studio (2013) 类图中配置关联,以便在从中生成代码时创建类型为 List<MyClass> 甚至 ICollection<MyClass> 的属性,而不是默认的 @987654323 @?
【问题讨论】:
标签: c# visual-studio code-generation
是否可以在 Visual Studio (2013) 类图中配置关联,以便在从中生成代码时创建类型为 List<MyClass> 甚至 ICollection<MyClass> 的属性,而不是默认的 @987654323 @?
【问题讨论】:
标签: c# visual-studio code-generation
是的,可以更改输出。 Visual Studio 使用 T4 模板从体系结构工具生成代码。
您可以在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\Extensibility\Templates\Text 找到模板(删除 (x86) 如果您有 32 位机器)。
使用以下步骤将生成的代码更改为IList<T>,而不是默认的IEnumerable<T>:
找到名为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 在生成代码时使用它们,更多详细信息请参见 MSDN。
【讨论】: