代码生成器(一)(基于接口的工厂模式的三层架构)

    技术2022-05-11  40

    春节在家无聊,看见别人用的代码生成器,代码生成规范和工整,自己也写了一个基于接口的工厂模式的代码生成器.

    一直偶都没有发现如何打包压缩文件.只能把部分代码共享出来. 如果需要参考所有源代码,请联系作者.

    生成层的代码如下:

    using  System; using  System.IO; using  System.Text; using  System.Configuration; namespace  CodeManage.Operate {    /// <summary>    /// GenerationCode 的摘要说明。    /// </summary>    public class GenerationCode    {        protected static string DbName =ConfigurationSettings.AppSettings["DbName"];        public GenerationCode()        {            //            // TODO: 在此处添加构造函数逻辑            //        }        /// <summary>        /// 生成BLL层代码        /// </summary>        生成BLL层代码            /// <summary>        /// 生成DALFactory层代码        /// </summary>        生成DALFactory层代码            /// <summary>        /// 生成IDAL层代码        /// </summary>        生成IDAL层代码            /// <summary>        /// 生成Model层代码        /// </summary>        生成Model层代码            /// <summary>        /// 生成SQLServerDAL层代码        /// </summary>        生成SQLServerDAL层代码        }}

    简单模版本文件如下(提供一个模版例子):

    / * + ---------------------------------------- + | 类  名称:表映射的属性信息| 功能说明: $ Modelkey[ 3 ]属性信息| 维护记录:Y / A| 代码生成:代码生成器| 联系方式:zlp@richway . cc| 创建日期: $ Modelkey[ 0 ]| 版权信息:版权所有  2007   $ Modelkey[ 1 ] + ----------------------------------------- + * / using System ; namespace  $ Modelkey[ 2 ] . Model{     ///   < summary >      ///  实体类 $ Modelkey[ 3 ]。 ( 属性说明自动提取数据库字段的描述信息 )      ///   </ summary >     public class  $ Modelkey[ 3 ]    {        public  $ Modelkey[ 3 ] ()         {}         # region Model         $ Modelkey[ 4 ]         # endregion Model    }}

    调用如下(生成SQLServerDAL层代码):

    using  System; using  System.Collections; using  System.ComponentModel; using  System.Data; using  System.Drawing; using  System.Web; using  System.Web.SessionState; using  System.Web.UI; using  System.Web.UI.WebControls; using  System.Web.UI.HtmlControls; using  System.IO; using  System.Text; namespace  CodeManage... {    /**//// <summary>    /// WebForm1 的摘要说明。    /// </summary>    public class WebForm1 : System.Web.UI.Page    ...{                protected static string DbName =System.Configuration.ConfigurationSettings.AppSettings["DbName"];        private void Page_Load(object sender, System.EventArgs e)        ...{            // 在此处放置用户代码以初始化页面            string DbName="Reservoir",tablename="Log";            string[] Content = new string[11];            StringBuilder strSQLServerDAL = new StringBuilder();            Content[0=System.DateTime.Now.ToString();        //代码生成日期            Content[1="北京江河瑞通有限责任公司";            //版权信息            Content[2=DbName;                                //数据库名            Content[3=tablename;                            //表名            try            ...{                using (StreamReader sr = new StreamReader(System.Web.HttpContext.Current.Server.MapPath("Templates"+ "SQLServerDAL.CST",System.Text.Encoding.Default))                ...{                    string oneline;                    while ((oneline= sr.ReadLine()) != null)                    ...{                        strSQLServerDAL.Append(oneline+" ");                    }                    sr.Close();                }                if (System.IO.Directory.Exists(System.Web.HttpContext.Current.Server.MapPath("Generation_Code"+ ""+DbName+".SQLServerDAL") == false)                 ...{                     System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath("Generation_Code"+ ""+DbName+".SQLServerDAL");                 }                 string fname = System.Web.HttpContext.Current.Server.MapPath("Generation_Code"+ ""+DbName+".SQLServerDAL est.cs";                                if (File.Exists(fname))                 ...{                    File.Delete(fname);                }                Content[4=Operate.GenerationAssistant.GetMaxKey(tablename);                Content[5=Operate.GenerationAssistant.GetExists(tablename);                Content[6=Operate.GenerationAssistant.GetAdd(tablename);                Content[7=Operate.GenerationAssistant.GetUpdate(tablename);                    Content[8=Operate.GenerationAssistant.GetDelete(tablename);                Content[9=Operate.GenerationAssistant.GetModel(tablename);                Content[10=Operate.GenerationAssistant.GetList(tablename);                    for (int i = 0; i < 11; i++)                ...{                    strSQLServerDAL.Replace("$SQLServerDALkey[" + i + "]", Content[i]);                }                FileInfo finfo = new FileInfo(fname);                using (FileStream fs = finfo.OpenWrite())                ...{                    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));                    sw.WriteLine(strSQLServerDAL.ToString());                    sw.Flush();                    sw.Close();                }            }            catch (Exception err)            ...{                Operate.GenerationLog.exNoteBugsToLogTxt(err,"GenerationCode.GenerationSQLServerDALCode");                       }        }        Web 窗体设计器生成的代码Web 窗体设计器生成的代码    }}

    最新回复(0)