У меня есть шаблон T4, который используется с TextTemplatingFilePreprocessor для генерации класса, который я затем могу использовать для генерации выходных данных шаблона.
В начале шаблона T4 я импортирую несколько пространств имен.Например,
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
Я хотел бы использовать Директивы препроцессора для переключения этих импортов с другим набором пространств имен (которые предоставляют те же интерфейсы, но отличающиеся по функциональности для ProductX).Например,
<#
#if(ProductX)
{
#>
<#@ import namespace="Company.ProductX.Widgets" #>
<#@ import namespace="Company.ProductX.Services" #>
//...
<#
}
#endif
#>
<#
#if(ProductY)
{
#>
<#@ import namespace="Company.ProductY.Widgets" #>
<#@ import namespace="Company.ProductY.Services" #>
//...
<#
}
#endif
#>
В приведенном выше примере импорт создает соответствующие операторы использования в классе независимо от директивы препроцессора.Например,
using Company.ProductX.Widgets
using Company.ProductX.Services
using Company.ProductY.Widgets
using Company.ProductY.Services
Есть ли другой способ использования препроцессоров в шаблонах T4 для воздействия на сам шаблон, а не только на вывод шаблона?