Ninject и строительные леса MVC

Я пытаюсь настроить шаблон MVC Scaffolding T4 для репозитория, чтобы он создавал привязки Ninject в моем классе App_Start\NinjectMVC3.cs.

Я могу изменить шаблон, чтобы настроить созданный репозиторий, но я немного не понимаю, как я могу заставить шаблон добавлять содержимое в отдельный файл.

Кто-нибудь делал что-нибудь подобное? Также я думаю, было бы удобно разделить репозиторий и его интерфейс на отдельные файлы.

Спасибо


person GraemeMiller    schedule 29.11.2011    source источник


Ответы (1)


Если вам нужно создать файл класса, отличный от исходного шаблона T4, я думаю, будет лучше, если вы создадите для этой цели новый шаблон. Если вы хотите сохранить файл в темпальте, вы можете создать файл с помощью библиотеки Syste.IO:

<#@ import namespace=“System.IO” #>

<#+
  void SaveOutput(string outputFileName)
  {
      string templateDirectory = Path.GetDirectoryName(Host.TemplateFile);
      string outputFilePath = Path.Combine(templateDirectory, outputFileName);
      File.WriteAllText(outputFilePath, GetMyContent()); 
  }
#>
<#+
  string GetMyContent()
  {
      // clean the environment 
      this.GenerationEnvironment.Remove(0, this.GenerationEnvironment.Length);
      #>
        This is my content
      <#+
      // return new content
      return this.GenerationEnvironment.ToString(); 
  }
#>

Вам необходимо разработать GetMyContent(), чтобы заполнить выходной файл правильным содержимым. В этом примере GetMyContent каждый раз очищает среду, поэтому не забудьте использовать метод SaveOutput после создания всех остальных файлов.

person Massimo Zerbini    schedule 29.11.2011
comment
Это должно помочь с разделением файла репозитория. Я также хочу добавить код в существующий файл класса как часть формирования репозитория с помощью шаблона MVC Scaffolding. Есть идеи? - person GraemeMiller; 29.11.2011
comment
@GraemeMiller Вы можете попробовать изменить файл ControllerWithRepository.cs.t4 (перед этим сделайте резервную копию), размещенный в каталоге packages\MvcScaffolding.1.0.4.0 в вашем проекте. Вы можете добавить функцию SaveOutput и свой новый контент. - person Massimo Zerbini; 30.11.2011