T4: возможно ли использовать скрипт для заполнения шаблона, при этом предоставляя разделы через скрипт? - PullRequest
0 голосов
/ 14 января 2010

У меня есть шаблон, который генерирует класс и дополнительный интерфейс, чтобы пойти с ним из сценария, например так:

<#@ 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 (конструктор) из скрипта, не передавая ему прямую строку и поместив его в нужное место в шаблоне?

1 Ответ

1 голос
/ 26 января 2010

Предполагая, что вы предпочтете использовать шаблонную функциональность T4 для генерации конструктора, вы можете определить виртуальный метод (т.е. GenerateTopRegionText) в классе BusinessObjectTemplate и вызвать его из метода BusinessObjectTemplate.TransformText. Сделав это, вы можете переопределить это так:

<#+
class PriorityTemplate: BusinessObjectTemplate
{
    override void GenerateTopRegionText()
    {
#>
    internal ModelPriority(byte value, string display)
    {
        Value = value;
        Display = display;
    }        
<#+
    }
}
#>

Подробнее здесь .

...