Как написать текстовый шаблон T4 для реализации интерфейса? - PullRequest
1 голос
/ 29 ноября 2011

У меня есть проект, содержащий несколько интерфейсов, и я хочу написать один шаблон для генерации классов, которые реализуют эти интерфейсы (например, если у меня 2 интерфейса, шаблон будет генерировать 2 класса). Созданный класс помещается в определенную папку.

В настоящее время у меня есть два вопроса:
1. Мой шаблон генерирует только один файл, который содержит много классов.
2. Класс создается под текстовым шаблоном.

Ниже мой код:

<#@ template language="C#" #>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#>

<#
Assembly assembly = Assembly.LoadFrom(@"Example.dll");
Type[] types = assembly.GetTypes();
foreach (Type type in types)
{
    if (type.IsInterface)
    {
        string nameSpace = "Example.Client";
        string className = type.Name.TrimStart('I')";
        string interfaceName = type.Name;

#>

namespace <#= nameSpace #>
{
    public class <#= className #> : <#= interfaceName #>
    {
    }
}

<#
    }
}
#>

Как я могу сгенерировать много классов для определенной папки? Можете ли вы помочь мне, пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 июля 2015

С вашим шаблоном выше вы просто поместите его в шаблон (файл .tt) в этом каталоге.Если вы хотите, чтобы файл вашего шаблона находился в более высоком каталоге, посмотрите на Олег http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/ Обратите внимание на метод SaveOutput().

0 голосов
/ 30 ноября 2011

проверить http://www.olegsych.com/2007/12/text-template-transformation-toolkit/

также http://www.olegsych.com/2008/03/how-to-generate-multiple-outputs-from-single-t4-template/

Но зачем?Если это сгенерированный код, вам не нужно его трогать.

...