用T4模板实现简单的代码生成器
2012-04-03 13:04
197 查看
最近想在项目中使用一个代码生成器,用T4模板实现了,还是蛮方便的。关于T4模板的介绍可以看下园中相关系列文章T4的介绍,创建运行时模板。里面介绍蛮详细的。
代码生成器界面如下,比较简单,我这里是通过传入实体类名称生成对应层的代码:
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方法,取得要生成的文件中内容。
代码中的下载和压缩用到了园子中的工具类 http://www.cnblogs.com/zjyuan/archive/2011/11/06/2237883.html
我这里生成的代码主要是为了符合自己项目的需要,实际使用中可以根据需要扩展如通过数据库表生成model,存储过程等
代码下载
代码生成器界面如下,比较简单,我这里是通过传入实体类名称生成对应层的代码:
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方法,取得要生成的文件中内容。
代码中的下载和压缩用到了园子中的工具类 http://www.cnblogs.com/zjyuan/archive/2011/11/06/2237883.html
我这里生成的代码主要是为了符合自己项目的需要,实际使用中可以根据需要扩展如通过数据库表生成model,存储过程等
代码下载
相关文章推荐
- 一个简单的代码生成器(T4文本模板运用)
- XML与ASP简单结合实现HTML模板功能
- 基于Ant+Velocity的简单代码生成器的思路与实现
- XML与ASP简单结合实现HTML模板功能
- Linu c++ 简单实现链表类模板
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- 基于Ant+Velocity的简单代码生成器的思路与实现
- 单链表c++简单模板实现
- 二叉查找树的简单模板实现
- XML与ASP简单结合实现HTML模板功能
- SpringMVC+jade实现高性能模板引擎(简单配置)
- MVC模式与模板引擎简单实现
- 一个java代码生成器的简单实现
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(12)-实现用户异步登录和T4模板
- C++,数据结构,单向链表的实现及简单运用,运用模板
- 【C++】单例模式的一种简单实现的模板
- 利用模板实现简单的栈类(数组和单链表)
- PHP技术-实现一个最简单的模板分离
- 单链表c++简单模板实现
- 二叉查找树的简单模板实现