你的位置:首页 > 软件开发 > ASP.net > 吐槽CodeDom

吐槽CodeDom

发布时间:2016-03-28 19:00:04
用着.NET Framework,发现了CodeDom的先天性缺陷,心里百般难受。不知道 CodeDom 是什么的请看这里 CodeDom_百度百科这里有CodeDom非常全的中文教程 CodeDOM - 随笔分类 - lichdr - 博客园首先说,CodeDom的思想非常 ...

用着.NET Framework,发现了CodeDom的先天性缺陷,心里百般难受。

不知道 CodeDom 是什么的请看这里 CodeDom_百度百科

这里有CodeDom非常全的中文教程 CodeDOM - 随笔分类 - lichdr - 博客园

首先说,CodeDom的思想非常好,把代码当作研究的对象,用对象来表示代码,这为代码的动态处理提供了方便的可能。

CodeDom 的类型非常多,非常难以记得,经常凭着感觉组装CodeDom,却往往在几个很类似的类的选取时被迷惑了,特别是CodeTypeReference和CodeTypeReferenceExpression,还有很特别的CodeExpressionStatement。单看MSDN的注释非常抽象,幸好有勤劳的朋友作了整理。微软CodeDom模型学习笔记(全) - 赛提斯特 - 博客园

本次是我第N次接触CodeDom,我深知CodeDom写起来非常繁琐,所以本次我作了简单的封装,于是用起来简洁多了。

//创建一个对象var NewDbContext = Code.Var("MyDbContext", "db", Code.New("MyDbContext")).Value;var NewUser = Code.Var("User", "newUser", Code.New("User")).Value;//调用一个方法//db.Users.Add(newUser);var db_Users_Add = Code.Var("db").Property("Users").Method("Add", Code.Var("newUser")).Value;//db.SaveChanges();var db_SaveChanges = Code.Var("db").Method("SaveChanges");//if(!db.SaveChanges(...)){ ... } else { ... }var If = Code.If(db_SaveChanges.Not()).Then(Code.Class("Console").Method("WriteLine", Code.ConstValue("Register failed.")).AsStatement()).Else(Code.Class("Console").Method("WriteLine", Code.ConstValue("Register Success.")).AsStatement()).Value;var codes = new CodeStatementCollection();codes.Add(NewDbContext);codes.Add(NewUser);codes.Add(db_Users_Add);codes.Add(If);

原标题:吐槽CodeDom

关键词:dom

dom
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。