Как я решил это, я написал класс T4 DesignHelper в Visual Studio. Мне пришлось добавить некоторые ссылки в веб-проекте Visaul Studio ASP.NET MVC в
Microsoft.VisualStudio.TextTemplating.10.0
Microsoft.VisualStudio.TextTemplating.Interfaces.10.0
Microsoft.VisualStudio.Web.Mvc.4.0
System.ComponentModel.DataAnnotations
, возможно, некоторые другие классы, которые вы можете нарушитьв рефлекторе .NET используется хост mvc.Поэтому то, что вам может понадобиться.Затем в первой строке шаблона T4 я создаю экземпляр класса T4 DesignHelper и передаю в него хост mvc.Остальные методы в шаблоне T4 воспроизводятся в классе T4Designer (так что я могу видеть, что происходит, плюс любые другие методы, которые я хотел или вы могли бы добавить. Вы можете создать экземпляр того, что вы хотите, чтобы вызовы FileInfo db использовали дополнительное отражение для получения информациииз Типов моделей и т. д. Это имеет несколько преимуществ 1. Вы можете вызвать его из контроллера, когда представление загружается и видит, что происходит, все ваши методы выполняются и что происходит. Кроме того, это уменьшает шаблон T4 до методавызывает созданный экземпляр класса T4 DesignHelper, и вы можете поместить в него действительно сложную логику генерации представлений.