为什么80%的码农都做不了架构师?>>>   

最近受到 单程列车 http://www.cnblogs.com/zhaojingjing/  的启发,让我做一个模板文件来生成代码,效果会很好,我就接纳了人家善意的提醒,周六晚上就改进了一下代码生成器,折腾了一个多小时,一个简易的按模板替换的代码生成器功能实现好了,非常简单好用,现在分享给大家。

模板文件里用了 namespace #Company#.#Project#.Service, #?# 进行替换的思路,设置了文本模板文件,然后用代码生成器进行后台的代码,方便高效一些,代码质量也有保障一些。读取文件的功能函数参考如下:

             string  file  =  Application.StartupPath  +   " \\Templates\\IService.txt " ;
             string  code  =  GetTemplate(file);
            code  =  ReplaceTemplate(code);
             this .txtCode.SettxtContent( " c# " , code);
         private   string  GetTemplate( string  file)
        {
             string  code  =   string .Empty;
            FileStream fileStream  =   new  FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
             using  (StreamReader streamReader  =   new  StreamReader(fileStream, Encoding.Default))
            {
                code  =  streamReader.ReadToEnd();
            }
             return  code;
        }

模板文件的替换参考如下:

         private   string  ReplaceTemplate( string  code)
        {
            code  =  code.Replace( " #Author# " ,  this .txtAuthor.Text);
            code  =  code.Replace( " #ClassName# " ,  this .txtClassName.Text);
            code  =  code.Replace( " #Code# " ,  this .txtCode.Text);
            code  =  code.Replace( " #Company# " ,  this .txtCompany.Text);
            code  =  code.Replace( " #DateCreated# " ,  this .txtDateCreated.Text);
            code  =  code.Replace( " #Project# " ,  this .txtProject.Text);
            code  =  code.Replace( " #YearCreated# " ,  this .txtYearCreated.Text);
             return  code;
        }

程序的运行效果如下:

按模板生成的代码主要功能部分是这2个按钮:

按模板替换的只要有以下2个模板文件,模板文件以文本的方式存了代码文件。

服务程序接口模板文件的参考如下: IService.txt

代码

// ------------------------------------------------------------
//  All Rights Reserved , Copyright (C) #YearCreated# , #Company# , Ltd. 
// ------------------------------------------------------------

using  System.Data;
using  System.ServiceModel;
using  System.Collections.Generic;

namespace  #Company#.#Project#.IService
{
     using  DotNet.Model;
     using  DotNet.Utilities;

///   <summary>
     ///  I#ClassName#Service
     ///  服务层接口
     ///  
     ///  修改纪录
     ///  
     ///         #DateCreated# 版本:1.0 #Author# 创建文件。
     ///         
     ///  版本:1.0
     ///
     ///   <author>
     ///          <name> #Author# </name>
     ///          <date> #DateCreated# </date>
     ///   </author>  
     ///   </summary>
    [ServiceContract]
     public   interface  I#ClassName#Service
    {
         ///   <summary>
         ///  添加实体
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="entity"> 实体 </param>
         ///   <param name="statusCode"> 返回状态码 </param>
         ///   <param name="statusMessage"> 返回状态信息 </param>
         ///   <returns> 主键 </returns>
        [OperationContract]
         string  Add(BaseUserInfo userInfo, #ClassName#Entity entity,  out   string  statusCode,  out   string  statusMessage);

///   <summary>
         ///  获取列表
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <returns> 数据表 </returns>
        [OperationContract]
        DataTable GetDT(BaseUserInfo userInfo);
        
         ///   <summary>
         ///  获取实体
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="id"> 主键 </param>
         ///   <returns> 实体 </returns>
        [OperationContract]
        #ClassName#Entity GetEntity(BaseUserInfo userInfo,  string  id);
        
         ///   <summary>
         ///  编辑
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="entity"> 实体 </param>
         ///   <param name="statusCode"> 返回状态码 </param>
         ///   <param name="statusMessage"> 返回状态信息 </param>
         ///   <returns> 影响行数 </returns>
        [OperationContract]
         int  Update(BaseUserInfo userInfo, #ClassName#Entity entity,  out   string  statusCode,  out   string  statusMessage);
        
         ///   <summary>
         ///  获取数据列表
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="ids"> 主键 </param>
         ///   <returns> 数据表 </returns>
        [OperationContract]
        DataTable GetDTByIds(BaseUserInfo userInfo,  string [] ids);
                
         ///   <summary>
         ///  批量保存
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="entites"> 实体列表 </param>
         ///   <returns> 影响行数 </returns>
        [OperationContract]
         int  BatchSave(BaseUserInfo userInfo, List < #ClassName#Entity >  entites);
                
         ///   <summary>
         ///  删除
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="id"> 主键 </param>
         ///   <returns> 数据表 </returns>
        [OperationContract]
         int  Delete(BaseUserInfo userInfo,  string  id);
        
         ///   <summary>
         ///  批量删除
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="ids"> 主键数组 </param>
         ///   <returns> 影响行数 </returns>
        [OperationContract]
         int  BatchDelete(BaseUserInfo userInfo,  string [] ids);

///   <summary>
         ///  批量做删除标志
         ///   </summary>
         ///   <param name="userInfo"> 用户 </param>
         ///   <param name="ids"> 主键数组 </param>
         ///   <returns> 影响行数 </returns>
        [OperationContract]
         int  SetDeleted(BaseUserInfo userInfo,  string [] ids);
     }
}

服务程序模板文件的参考如下:Service.txt

代码

// ------------------------------------------------------------
//  All Rights Reserved , Copyright (C) #YearCreated# , #Company# , Ltd. 
// ------------------------------------------------------------

using  System;
using  System.Data;
using  System.Collections.Generic;
using  System.Reflection;

namespace  #Company#.#Project#.Service
{
     using  DotNet.Business;
     using  DotNet.DbUtilities;
     using  DotNet.Model;
     using  DotNet.Utilities;
     using  DotNet.IService;

///   <summary>
     ///  #ClassName#Service
     ///  服务层
     ///  
     ///  修改纪录
     ///  
     ///         #DateCreated# 版本:1.0 #Author# 创建文件。
     ///         
     ///  版本:1.0
     ///
     ///   <author>
     ///          <name> #Author# </name>
     ///          <date> #DateCreated# </date>
     ///   </author>  
     ///   </summary>
     public   class  #ClassName#Service : System.MarshalByRefObject, I#ClassName#Service
    {
         ///   <summary>
         ///  业务数据库连接
         ///   </summary>
         private   readonly   string  BusinessDbConnection  =  BaseSystemInfo.BusinessDbConnection;

///   <summary>
         ///  添加实体
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="entity"> 实体 </param>
         ///   <param name="statusCode"> 返回状态码 </param>
         ///   <param name="statusMessage"> 返回状态信息 </param>
         ///   <returns> 主键 </returns>
         public   string  Add(BaseUserInfo userInfo, #ClassName#Entity entity,  out   string  statusCode,  out   string  statusMessage)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
             string  returnValue  =   string .Empty;

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                returnValue  =  manager.AddEntity(entity);
                 //  returnValue = manager.Add(entity, out statusCode);
                statusMessage  =  manager.GetStateMessage(statusCode);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif
            
             return  returnValue;
        }

///   <summary>
         ///  获取列表
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <returns> 数据表 </returns>
         public  DataTable GetDT(BaseUserInfo userInfo)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
            DataTable dataTable  =   new  DataTable(#ClassName#Table.TableName);

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                 //  获得列表
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                dataTable  =  manager.GetDT(#ClassName#Table.FieldDeletionStateCode,  0 , #ClassName#Table.FieldSortCode);
                dataTable.TableName  =  #ClassName#Table.TableName;
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  dataTable;
        }

///   <summary>
         ///  获取实体
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="id"> 主键 </param>
         ///   <returns> 实体 </returns>
         public  #ClassName#Entity GetEntity(BaseUserInfo userInfo,  string  id)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
            #ClassName#Entity entity  =   null ;

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                entity  =  manager.GetEntity(id);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  entity;
        }

///   <summary>
         ///  编辑
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="entity"> 实体 </param>
         ///   <param name="statusCode"> 返回状态码 </param>
         ///   <param name="statusMessage"> 返回状态信息 </param>
         ///   <returns> 影响行数 </returns>
         public   int  Update(BaseUserInfo userInfo, #ClassName#Entity entity,  out   string  statusCode,  out   string  statusMessage)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
             int  returnValue  =   0 ;

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                returnValue  =  manager.UpdateEntity(entity);
                 //  returnValue = manager.Update(entity, out statusCode);
                statusMessage  =  manager.GetStateMessage(statusCode);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  returnValue;
        }

///   <summary>
         ///  获取数据列表
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="ids"> 主键 </param>
         ///   <returns> 数据表 </returns>
         public  DataTable GetDTByIds(BaseUserInfo userInfo,  string [] ids)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
            DataTable dataTable  =   new  DataTable(#ClassName#Table.TableName);

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                dataTable  =  manager.GetDT(#ClassName#Table.FieldId, ids, #ClassName#Table.FieldSortCode);
                dataTable.TableName  =  #ClassName#Table.TableName;
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  dataTable;
        }
        
         ///   <summary>
         ///  批量保存
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="entites"> 实体列表 </param>
         ///   <returns> 影响行数 </returns>
         public   int  BatchSave(BaseUserInfo userInfo, List < #ClassName#Entity >  entites)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif

int  returnValue  =   0 ;
            IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                 //  returnValue = manager.BatchSave(entites);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  returnValue;
        }
        
         ///   <summary>
         ///  删除
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="id"> 主键 </param>
         ///   <returns> 数据表 </returns>
         public   int  Delete(BaseUserInfo userInfo,  string  id)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
             int  returnValue  =   0 ;

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                returnValue  =  manager.Delete(id);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  returnValue;
        }
        
         ///   <summary>
         ///  批量删除
         ///   </summary>
         ///   <param name="userInfo"> 操作员 </param>
         ///   <param name="ids"> 主键数组 </param>
         ///   <returns> 影响行数 </returns>
         public   int  BatchDelete(BaseUserInfo userInfo,  string [] ids)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
             int  returnValue  =   0 ;

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                 //  开始数据库事务
                dbHelper.BeginTransaction();
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                returnValue  =  manager.BatchDelete(ids);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
                 //  递交数据库事务
                dbHelper.CommitTransaction();
            }
             catch  (Exception ex)
            {
                 //  撤销数据库事务
                dbHelper.RollbackTransaction();
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  returnValue;
        }

///   <summary>
         ///  批量做删除标志
         ///   </summary>
         ///   <param name="userInfo"> 用户 </param>
         ///   <param name="ids"> 主键数组 </param>
         ///   <returns> 影响行数 </returns>
         public   int  SetDeleted(BaseUserInfo userInfo,  string [] ids)
        {
             //  写入调试信息
             #if  (DEBUG)
                 int  milliStart  =  BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());
             #endif
             int  returnValue  =   0 ;

IDbHelper dbHelper  =  DbHelperFactory.GetHelper();
             try
            {
                dbHelper.Open(BusinessDbConnection);
                #ClassName#Manager manager  =   new  #ClassName#Manager(dbHelper, userInfo);
                returnValue  =  manager.SetDeleted(ids);
                BaseLogManager.Instance.Add(dbHelper, userInfo, MethodBase.GetCurrentMethod());
            }
             catch  (Exception ex)
            {
                BaseExceptionManager.LogException(dbHelper, userInfo, ex);
                 throw  ex;
            }
             finally
            {
                dbHelper.Close();
            }

//  写入调试信息
             #if  (DEBUG)
                BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);
             #endif

return  returnValue;
        }
    }
}

转载于:https://my.oschina.net/iwenr/blog/227639

自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考...相关推荐

  1. 利用poi读取word模板文件生成新的word文档

    利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...

  2. java word模板poi生成文件_利用poi读取word模板文件生成新的word文档

    利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...

  3. 使用NPOI按照word模板文件生成新的word文件

    /// <summary>/// 按照word模板文件 生成新word文件/// </summary>/// <param name="tempFile&quo ...

  4. Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类

    Java使用ftl模板文件生成Word 一.写在前面 最近在项目中使用打印功能,发现这个功能我已经写过多次了,下面这个文章的发步日期在2020年,不得不感慨时间之快啊. https://blog.cs ...

  5. npoi word生成HTML,使用NPOI按照word模板文件生成新的word文件

    /// /// 按照word模板文件 生成新word文件 /// /// 模板文件路径 /// 生成文件路径 /// 议案登记 public void CreateFileByTemplate(str ...

  6. 在.net Core 使用PDF模板文件生成PDF文件,代替WEB打印控件!

    这几天找WEB打印控件,要么收费的,要么免费的只能在IE里用! 我只想简单的打个标签纸!百度2天,看到一老兄说可以用PDF,然后又开始百度..找到了一篇文章 http://www.jianshu.co ...

  7. Chimm.Excel —— 使用Java 操作 excel 模板文件生成 excel 文档

    内容已不在此处更新,请移步https://blog.csdn.net/chimmhuang/article/details/111251115 1. 项目介绍 Chimm.Excel 是什么? 该程序 ...

  8. python 利用模板文件生成配置文件

    2019独角兽企业重金招聘Python工程师标准>>> gen.py: __author__ = 'fuhan' from jinja2 import Template a={'na ...

  9. T4文本模板转换过程

    T4文本模板转换过程将文本模板文件作为输入,生成一个新的文本文件作为输出. 例如,可以使用文本模板生成 Visual Basic 或 C# 代码,还可以生成 HTML 报告. 有三个组件参与这一过程: ...

最新文章

  1. R语言switch语句语法、实战:Switch语句用来处理嵌套的if else处理起来比较困难或者麻烦的条件判断问题
  2. echart的关系图高亮_echart中饼状图的高亮显示。
  3. LeetCode —— 146. LRU缓存机制(Python)
  4. React 使用browserHistory项目访问404问题
  5. jquery 文件上传 触发两次_点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果上传了3个文件,即发生了三次请求...
  6. android应用开发(26)---Parcelables 和 Bundles
  7. Ansible 运维自动化 ( 配置管理工具 )
  8. 充电器input与output_input和output的区别
  9. MeteoInfoLab脚本示例:数据投影-FLEXPART
  10. 异常检测的总结性介绍
  11. 浅谈敏捷思想-06.精益创业
  12. VUE系列 --- 网络模块axios(二 )
  13. MacFamilyTree 8 for Mac(家谱族谱制作)
  14. Kubernetes Downward API 基本用法
  15. php计算第几周,php计算当前是一年或一月中第几周的函数
  16. 新疆高一计算机学业水平测试,2017年新疆高中学业水平考试科目
  17. NTL密码算法开源库——模二整数上的矩阵(mat_GF2)
  18. 我辞职了准备系统学习新知识和技提升自己
  19. 这4种照片千万不能保存在手机相册里,必须重视,避免损失
  20. 给计算机系学生的建议

热门文章

  1. AjaxFileUpload 方法与原理分析
  2. 【LeetCode】004 Median of Two Sorted Arrays 两个排序数组合并后的中位数
  3. linux高级运维要会的,linux高级运维必会命令
  4. 线上的java环境_Linux部署JavaWeb线上环境
  5. 水平分库分表的关键步骤和技术难点,分库分表的几种常见玩法及如何解决跨库查询等问题...
  6. 2015 百度之星 1004 KPI STL的妙用
  7. h5实现手机端等级进度条
  8. 2013应届毕业生“京北方”校招应聘总结
  9. PDF.NET数据开发框架操作MySQL实体类操作实例
  10. 10个免费开源的项目管理工具