Когда вы используете функциональные блоки класса в T4, то есть <# + #> , этот код становится частью базового класса, который генерирует выходной файл шаблона.В Visual Studio 2008 этот базовый класс является производным от абстрактного класса Microsoft.VisualStudio.TextTemplating.TextTransformation .
Таким образом, вы можете писать напрямую в выходной поток, используя унаследованный Методы записи () или WriteLine () .Например, в вашем коде:
<#
//Code to get child and parent data
IterateThroughChildren(object child, object parent);
#>
<#+
void IterateThroughChildren(object c, object p)
{
if(c is abc)
{
if(p is def)
{
//emit some code here i.e WriteLine(SomeThing); ?????
this.WriteLine(SomeThing); // writes SomeThing to the output file
foreach (var item in def.Item)
{
IterateThroughChildren(item, def);
}
}
}
. . .
//and so on
}
#>
, где this.WriteLine (SomeThing) - единственное, что я добавил.