前言
在ASP.NET Core中引入了DI,并且通過構(gòu)造函數(shù)注入?yún)?shù),控制器中會(huì)大量使用DI注入各種的配置參數(shù),如果配置注入的參數(shù)比較多,而且各個(gè)控制器需要的配置參數(shù)都基本一樣的話,那么不斷重復(fù)的復(fù)制黏貼代碼提供相應(yīng)的構(gòu)造函數(shù),效率低效也,因此使用T4模板生成控制器的構(gòu)造函數(shù) ,這也得益于C#對分部類(partial)的支持。
T4模板生成控制器構(gòu)造函數(shù)
圖中CtrlTemplate.tt為模板文件,CtrlNames.txt為需要使用T4生成代碼的控制器名稱文件,CtrlTemplate.cs為T4模板生成的文件。
CtrlNames.txt文件內(nèi)容:
Values Account
CtrlTemplate.tt代碼:
1 <#@ template language="C#" debug="false" hostspecific="true"#> 2 <#@ assembly name="System.Core" #> 3 <#@ import namespace="System.Linq" #> 4 <#@ import namespace="System.Text" #> 5 <#@ import namespace="System.Collections.Generic" #> 6 <#@ output extension=".cs" #> 7 using ApiCoreTest; 8 using EFDbContext; 9 using Microsoft.AspNetCore.Mvc;10 using Microsoft.Extensions.Logging;11 using Microsoft.Extensions.Options;12 13 namespace ApiCoreTest.Controllers14 {15 <#16 //獲取項(xiàng)目的根目錄17 &