亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

重寫代碼生成器支持模板(多層架構,MVC),多語言c#,java;支持mysql和sqlserver,動態編譯

2019-11-17 02:13:38
字體:
來源:轉載
供稿:網友

重寫代碼生成器支持模板(多層架構,MVC),多語言c#,java;支持MySQL和sqlserver,動態編譯

多年前用過李天平前輩的,自己改過,后來李老師做動軟了,不給源碼,修改不是很方便。加上我目前需要轉java方向,于是決定自己搞。到目前為止花了整整一個星期了,看看目前的成果。

QQ圖片20150729212121

QQ截圖20150729212205

QQ截圖20150729213325

QQ截圖20150729213412

QQ截圖20150729213436

QQ截圖20150729213529

最后是代碼工程文件,用c#開發的,IDE是vs2010

QQ截圖20150729214011

為了實現最大的模板自由,設計了專有的模板語法?;贑#,但是已經做到盡量簡化,對有一點開發經驗的同行應該是很好上手的。

目前c#的代碼模板已經做了一些通用樣例,接下來做java的開發代碼模板。

總之,為了提高效率,并且規范項目團隊成員的代碼書寫。

下面把核心的代碼兩個類文件貼出來,分別是動態編譯和模板解析

  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.CodeDom.Compiler;  6 using System.Reflection;  7   8 namespace CodeMaker.Engine  9 { 10     public class Compiler 11     { 12         /// <summary> 13         /// 普通代碼編譯執行出字符串 14         /// </summary> 15         /// <param name="strCode"></param> 16         /// <returns></returns> 17         public static string DoCompile(string strCode) 18         { 19              20             StringBuilder strResults = new StringBuilder(); 21  22             CodeDomPRovider provider = CodeDomProvider.CreateProvider("CSharp"); 23  24             //CompilerParameters 編譯參數 25             CompilerParameters objCompilerParameters = new CompilerParameters(); 26             objCompilerParameters.ReferencedAssemblies.Add("System.dll"); 27             objCompilerParameters.ReferencedAssemblies.Add("System.Core.dll"); 28             objCompilerParameters.ReferencedAssemblies.Add("System.Data.dll"); 29             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.BLL.dll"); 30             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.DALFactory.dll"); 31             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.IDAL.dll"); 32             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.Model.dll"); 33             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.MySqlDAL.dll"); 34             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.SqlDAL.dll"); 35             objCompilerParameters.ReferencedAssemblies.Add("CodeMaker.Engine.dll"); 36             objCompilerParameters.GenerateExecutable = false; 37             objCompilerParameters.GenerateInMemory = true; 38              39             // CompilerResults 40             CompilerResults cr = provider.CompileAssemblyFromSource(objCompilerParameters, strCode); 41  42             if (cr.Errors.HasErrors) 43             { 44                 Console.WriteLine("編譯錯誤:"); 45                 foreach (CompilerError err in cr.Errors) 46                 { 47                     strResults.Append(err.ErrorText); 48                     strResults.Append(Environment.NewLine); 49                     strResults.Append(err.Line); 50                     strResults.Append(Environment.NewLine); 51                     strResults.Append(err.ToString()); 52                     strResults.Append(Environment.NewLine); 53                  54                 } 55             } 56             else 57             { 58                 // 通過反射,調用OutPut的輸出方法 59                 Assembly objAssembly = cr.CompiledAssembly; 60                 object objHelloWorld = objAssembly.CreateInstance("DynamicCodeGenerate.CodeGenerate"); 61                 MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut"); 62  63                 strResults.Append(objMI.Invoke(objHelloWorld, null)); 64                 strResults.Append(Environment.NewLine); 65                66             } 67              68              69             return strResults.ToString(); 70         } 71  72         public static string DoCodeMakerCompile(string strDBType,string DALAssemblyPath, string strDataBase,string strTableName, string strEntityName,string strCode) 73         { 74              75              76             StringBuilder sb = new StringBuilder(); 77             //加上要編譯部分代碼的頭部和尾部 78             //頭部 79             sb.Append("using System;"); 80             sb.Append("using System.Data;"); 81             sb.Append("using System.Text;"); 82             sb.Append("using System.Linq;"); 83             sb.Append("using System.Globalization;"); 84             sb.Append("using System.Collections.Generic;"); 85             sb.Append("using CodeMaker.Model;"); 86             sb.Append("using CodeMaker.BLL;"); 87             sb.Append("using CodeMaker.Engine;"); 88             sb.Append("namespace DynamicCodeGenerate"); 89             sb.Append("{"); 90  91              92  93             sb.Append("   public class CodeGenerate"); 94             sb.Append("   {"); 95             sb.Append("        public string OutPut()"); 96             sb.Append("        {"); 97  98             //讀取數據實體的屬性的代碼段 99             sb.Append(GetEntity(strDBType, DALAssemblyPath, strDataBase, strTableName, strEntityName));100 101             sb.Append(strCode);102 103             //返回值,字符串104             sb.Append("         return s.ToString(); ");105             sb.Append("        }");106             //fOutPut方法結束107             //首字母大寫方法108             sb.Append("        public string ToTitleCase(string str)");109             sb.Append("        {");110             sb.Append("          return str.Substring(0,1).ToUpper()+str.Substring(1);");111             sb.Append("        }");112             //首字母小寫方法113             sb.Append("        public string ToLowerCase(string str)");114             sb.Append("        {");115             sb.Append("          return str.Substring(0,1).ToLower()+str.Substring(1);");116             sb.Append("        }");117             118             sb.Append("   }");119             sb.Append("}");120 121             return DoCompile(sb.ToString());122         }123 124         private static string GetEntity(string strDBType, string DALAssemblyPath, string strDataBase, string strTableName, string strEntityName)125         {126             StringBuilder sb = new StringBuilder();127             sb.Append("CodeMaker.BLL.EntityBLL bll = new CodeMaker.BLL.EntityBLL(/"" + DALAssemblyPath + "/");");128             sb.Append("IList<CodeMaker.Model.Entity> es = bll.GetEntityList(/"" + strDataBase + "/", /"" + strTableName + "/");");129             sb.Append("string EntityName=/"" + strEntityName + "/";");//實體名,供模板中的代碼段使用130             sb.Append("
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频在线看| 欧美壮男野外gaytube| 亚洲一区二区免费在线| 亚洲一区制服诱惑| 欧美一级片久久久久久久| 国产精品成av人在线视午夜片| 亚洲成年人在线| 亚洲精品福利在线| 国内揄拍国内精品| 日韩精品视频在线播放| 欧美性受xxx| 国模精品视频一区二区| 久久香蕉国产线看观看网| 亚洲老司机av| 国产视频999| 亚洲国产女人aaa毛片在线| 国产日韩综合一区二区性色av| 亚洲一区二区三区乱码aⅴ| 91精品国产自产在线| 欧美中文字幕在线视频| 国产色综合天天综合网| 亚洲综合精品伊人久久| 国产大片精品免费永久看nba| 亚洲成人精品久久| 国产在线一区二区三区| 亚洲精品免费一区二区三区| 一区二区三区久久精品| 国产91|九色| www.精品av.com| 亚洲欧美日韩久久久久久| 国产午夜一区二区| 成人精品久久av网站| 成人免费网站在线观看| 久久99热这里只有精品国产| 亚洲欧美日本另类| 成人网在线免费观看| 国产视频自拍一区| 欧美日韩视频免费播放| 国产一区二区三区在线观看视频| 日韩大陆欧美高清视频区| 国产精品视频播放| 成人黄色av免费在线观看| 亚洲国产另类 国产精品国产免费| 日韩在线免费观看视频| 黄色一区二区在线| 国产美女高潮久久白浆| 超碰精品一区二区三区乱码| 久久久亚洲影院你懂的| 欧美色欧美亚洲高清在线视频| 性欧美办公室18xxxxhd| 视频在线观看99| 韩国日本不卡在线| 日韩av影院在线观看| 91精品国产91久久久久久久久| 日韩在线中文字幕| 国产精品久久久久久久久久99| 亚洲欧美另类在线观看| 在线视频欧美日韩精品| 青青草原一区二区| 日韩在线小视频| 亚洲欧美日韩中文在线制服| 97av在线视频免费播放| 欧美一级淫片videoshd| 亚洲国产欧美一区二区三区久久| 欧美日韩国产在线播放| 久久精品国产亚洲精品| 国产精品久久久久久久一区探花| 欧美亚洲第一页| 国产精品黄页免费高清在线观看| 国产精品久久久久久久久借妻| 亚洲аv电影天堂网| 91精品视频专区| 国产精品入口免费视频一| 国产成一区二区| 日韩在线观看免费高清完整版| 欧美日韩成人在线视频| 欧美黑人狂野猛交老妇| 国产热re99久久6国产精品| 欧美电影免费看| 久久久久久免费精品| 色综合伊人色综合网站| 欧美野外wwwxxx| 亚洲欧美激情四射在线日| 国产成人激情视频| 国产精品久久久久久久久影视| 亚洲毛片在线观看.| 亚洲性猛交xxxxwww| 啊v视频在线一区二区三区| 欧美性xxxxx极品| 国产ts一区二区| 亚洲欧美综合精品久久成人| 欧美一级淫片aaaaaaa视频| 国产香蕉精品视频一区二区三区| 国产精品国模在线| 国产精品日韩一区| 亚洲欧美中文字幕在线一区| 91天堂在线视频| 疯狂做受xxxx欧美肥白少妇| 美女av一区二区三区| 亚洲天堂av综合网| 尤物99国产成人精品视频| 国产精品久久在线观看| 91热精品视频| 国产91亚洲精品| 国产精品一区二区性色av| 亚洲欧美日韩精品久久亚洲区| 日本久久久久久久| 国产成人精品国内自产拍免费看| 国产精品美女网站| 日韩激情第一页| 国产精品十八以下禁看| 91极品女神在线| 亚洲图片在区色| 亚洲成人av片在线观看| 亚洲一区二区免费在线| 91精品在线观看视频| 亚洲视频国产视频| 色综合久久天天综线观看| 蜜臀久久99精品久久久久久宅男| 中文字幕国产精品久久| 日韩中文字幕视频在线| 久久69精品久久久久久国产越南| wwwwwwww亚洲| 亚洲午夜精品久久久久久久久久久久| 欧美—级a级欧美特级ar全黄| 黑人巨大精品欧美一区二区免费| 国产精自产拍久久久久久蜜| 日韩69视频在线观看| 国产亚洲精品va在线观看| 日韩欧美在线观看| 午夜精品免费视频| 日韩最新在线视频| 中文日韩在线观看| 欧洲日本亚洲国产区| 深夜福利亚洲导航| 亚洲少妇激情视频| 亚洲欧美精品在线| 1769国内精品视频在线播放| 国产99久久精品一区二区永久免费| 欧美日韩中文字幕综合视频| 欧美日韩一区二区免费视频| 日韩中文字幕欧美| 色爱精品视频一区| 亚洲老板91色精品久久| 精品亚洲国产成av人片传媒| 91免费的视频在线播放| 这里只有精品丝袜| 日韩视频第一页| 国产精品一久久香蕉国产线看观看| 精品亚洲国产视频| 久久九九亚洲综合| 亚洲欧洲视频在线| 精品伊人久久97| 亚洲va久久久噜噜噜| 欧美在线免费视频| 欧美在线日韩在线| 一区二区三区视频免费| 在线观看日韩欧美| 欧美成人一区二区三区电影| 国产成人+综合亚洲+天堂| 亚洲成人教育av| 欧美老女人bb| 91免费看片网站| 亚洲美女在线观看|