t4b代码生成_用T4模板实现简单的代码生成器
最近想在項目中使用一個代碼生成器,用T4模板實現了,還是蠻方便的。關于T4模板的介紹可以看下園中相關系列文章T4的介紹,創建運行時模板。里面介紹蠻詳細的。
代碼生成器界面如下,比較簡單,我這里是通過傳入實體類名稱生成對應層的代碼:
添加預處理的模板 IDal.tt(其他類似),代碼如下:
View Code
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?Model;
namespace?IDal
{
public?interface?IDal?:?IRepository<>
{
}
}
同時新建一個IDal的部分類:
View Code
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Web;
namespace?CodeBuilder.Template
{
public?partial?class?IDal
{
public?string?ClassNames
{
get;
set;
}
public?IDal(string?_ClassNames)
{
this.ClassNames?=?_ClassNames;
}
}
}
default.aspx.cs主要代碼:
View Code
#region?通過反射取得要生成的類
Assembly?ass?=?Assembly.Load("Template");?//獲取程序集????????????????????????Type?myclass?=?null;
MethodInfo?mymethod?=?null;
foreach?(var?name?in?list)
{
foreach?(ListItem?item?in?chkboxType.Items)
{
if?(item.Selected)
{
Type[]?mytypes?=?ass.GetTypes();
foreach?(Type?t?in?mytypes)
{
if?(t.Name?==?item.Text)
{
myclass?=?t;
break;
}
}
Object?obj?=?Activator.CreateInstance(myclass,?name);
mymethod?=?myclass.GetMethod("TransformText");?//取TransformText()函數????????????????????????????????????String?pageContent?=?mymethod.Invoke(obj,?null).ToString();
//創建文件????????????????????????????????????File.AppendAllText(dirpath?+?@"\"?+?string.Format(item.Value,?name)?+?".cs",?pageContent);
}
}
}
#endregion
#region
這里通過反射查找所有要生成的模板文件并創建文件,通過myclass.GetMethod("TransformText")調用TransformText方法,取得要生成的文件中內容。
我這里生成的代碼主要是為了符合自己項目的需要,實際使用中可以根據需要擴展如通過數據庫表生成model,存儲過程等
總結
以上是生活随笔為你收集整理的t4b代码生成_用T4模板实现简单的代码生成器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layui 传递前端请求_Layui数据
- 下一篇: BootStrap笔记-BootStra