1. 精通T4脚本要从读懂脚本的关键代码片段开始

 1.1. 给类添加注释-->看懂类对应的代码:<#=codeStringGenerator.EntityClassOpening(entity)#>

替换前
WriteHeader(codeStringGenerator, fileManager);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<#=codeStringGenerator.EntityClassOpening(entity)#>
替换后

WriteHeader(codeStringGenerator, fileManager);

string summary=string.Empty;
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
if(entity.Documentation !=null && entity.Documentation.Summary!=null)
summary=entity.Documentation.Summary;
else
summary=entity.Name;
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
/// <summary>
/// <#=summary#>
/// </summary>
<#=codeStringGenerator.EntityClassOpening(entity)#>

1.2. 给命名空间添加注释-->看懂引用的命名空间对应的代码:<#=codeStringGenerator.UsingDirectives(inHeader: false)#>

该方法实现与于odeStringGenerator类下边。代码如下:

  public string UsingDirectives(bool inHeader, bool includeCollections = true)
{
return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion())
? string.Format(
CultureInfo.InvariantCulture,
"{0}using System;{1}" +
"{2}"+"{3}",
inHeader ? Environment.NewLine : "",
includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "",
includeCollections ? (Environment.NewLine + "using System.Data;") : "",
inHeader ? "" : Environment.NewLine)
: "";
}

1.3. 给属性添加注释-->看懂属性的代码对应的代码:<#=codeStringGenerator.Property(edmProperty)#>

替换前:

        foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>

替换后:

foreach (var edmProperty in simpleProperties)
{
if (edmProperty.Documentation != null && edmProperty.Documentation.Summary != null)
{
summary=edmProperty.Documentation.Summary;
}
else
{
summary="";
}
#>
/// <summary>
/// <#=summary#>
/// </summary>
<#=codeStringGenerator.Property(edmProperty)#>

1.4. 看懂命名空间namespace对应的代码:namespace <#=code.EscapeNamespace(codeNamespace)#>

最新文章

  1. mysql 7下载安装及问题解决
  2. 异常处理和JDBC
  3. BZOJ 1096 【ZJOI2007】 仓库建设
  4. GridView中超链接设置
  5. Python 字符串方法详解
  6. 使用NHibernate(10) -- 补充(inverse &amp;&amp; cascade)
  7. 《Java程序设计》实验四 实验报告
  8. R语言学习网站
  9. 【LeetCode练习题】Copy List with Random Pointer
  10. tomcat设置IP地址或者域名访问
  11. MySQL批量导出以某数字或字母开头的表
  12. ubuntu下使用nginx搭建流媒体服务器,实现视频点播
  13. ubuntu17.10 python3.6 install plugins for AI
  14. Shell脚本中的break continue exit return
  15. MySQL分组查询,前3条数据
  16. js没有函数重载
  17. JNI编程实现(Linux)
  18. Spring 属性注入(二)BeanWrapper 结构
  19. Alpha冲刺报告(4/12)(麻瓜制造者)
  20. OS X 10.11:如何完全停用Time Machine。

热门文章

  1. PA教材提纲 TAW10-1
  2. Windows Server 2012配置iis遇到的问题
  3. java 环境的安装、设置免密登陆、进行hadoop安装、关闭防火墙
  4. jQuery登录界面的文本框焦点代码
  5. JAVA for(i = 0; i&lt;a.length; i++) 解析
  6. 多系统引导 Grub
  7. PTA3
  8. mysql 中文支持
  9. 【scrapy】笔记一:安装,以及遇到的坑
  10. ImportError: dynamic module does not define module export function (PyInit__sqlite3)