我有一个模板,可以生成一个类和一个互补的接口,以便从脚本中继续使用它:
<#@ template language="C#v3.5" hostspecific="True" debug="True" #>
<#@ output extension="cs" #>
<#@ include file="T4Toolbox.tt" #>
<#@ include file="../BusinessObjectTemplate.tt" #>
<#
BusinessObjectTemplate template = new BusinessObjectTemplate();
template.BusinessName="Priority";
template.PropertyList=new Dictionary<string,BusinessPropertyT4>{
{"Value",new BusinessPropertyT4("byte")},
{"Display",new BusinessPropertyT4("string")},
};
template.TopRegionText="internal ModelPriority(byte value, String display)\r\n\t\t{\r\n"+
"\t\t\tValue=value;\r\n"+"\t\t\tDisplay=display;\r\n"+ "\t\t}";
template.Render();
#>
我如何从脚本中生成TopRegionText
(构造函数)而不向它提供直接字符串并将其放到模板中的正确位置?
答案 0 :(得分:1)
假设您更喜欢使用T4的模板功能来生成构造函数,您可以在BusinessObjectTemplate类中定义一个虚方法(即GenerateTopRegionText),并从BusinessObjectTemplate.TransformText方法中调用它。完成后,您可以像这样覆盖它:
<#+
class PriorityTemplate: BusinessObjectTemplate
{
override void GenerateTopRegionText()
{
#>
internal ModelPriority(byte value, string display)
{
Value = value;
Display = display;
}
<#+
}
}
#>