摘要:先来个Delphi的:The CodeDOM and the Delphi for .NET IDE 通过OTA在IDE里浏览CodeDOM。作者是Borland的工程师(他的BLOG) 在A Look At CodeDOM这篇BLOG里有很不错的链接,质量很高的。 MSDN http://msdn.microsoft.com/netframework/programming/bcl...
阅读全文
摘要:生成以后是编译了。在生成的时候,从GenerateCodeFromCompileUnit()这个方法开始,ICodeGenerator里面的其他几个方法都可以被调用到;而在ICodeCompiler里,接口里的方法最后都会调用到这么一个FromFileBatch()方法里来。那么看看在CodeCompiler这个类里是如何实现这个方法的: protected virtual Compil...
阅读全文
摘要:CodeDOM用得差不多了,不能天天只管写代码写呀写的,闲下来之余总是要想一想它是如何来实现这样的功能的呢?就那样建立起来一个CodeDOM的类,然后就可以去生成我们希望的代码,且可以动态的去编译它。 MS的东西没有源代码,不过现在可以用Reflector这样的好工具来粗粗地探究一下里面到底是如何干的(当然如果IL过关的话,也可以直接用Ildasm来看)。这一点还真是不赖。 提到CodeD...
阅读全文
摘要:CodeDOM这个东西虽然能生成大多数的程序代码,但它还是有点局限性的喽。我在写CodeDOM程序中就碰到过一些了,虽然有些特性是可以用其他方法代替的,但有些代码还是无法用CodeDOM写出来 。本来就是要写些最近在CodeDOM中碰到的问题的,但前两天在CodeProject上发现有人已经做过这样的事了http://www.codeproject.com/csharp/codedompars...
阅读全文
摘要:上次把实实在在的源代码生成了,不再是抽象的东西了,现在要用程序动态的来编译上次的东西。 System.CodeDOM.Compiler中的三个接口都是从CodeDomProvider得到的(上次强调过了),这次用到的接口是ICodeCompiler,所以先: CSharpCodeProvider provider = new CSharpCodeProvider...
阅读全文
摘要:写着写着就已经到(七)了,前面讲了那么多,分析如此这般的CodeDOM代码会有什么对应的程序代码;什么样的程序代码CodeDOM程序应该是如何写。其实那都是纸上谈兵的事,一段CodeDOM程序写下来,经过一个个的Add后,最后到了CodeCompileUnit这个CodeDOM容器就停了,没地方可以Add了。就凭这个CodeCompileUnit是不会凭空产生出来我们要的那些代码的喽,Code...
阅读全文
摘要:这么简单的一个类,其实直接让它生成类代码看一下也就知道行不行了。但既然做就做到底,把测试用的代码也一并用CodeDOM来生成算了,而且CodeDOM里还有几个类也要随便说一下。 先看生成后的代码(直接在原namespace里新做了一个类): public class TestClass { public static void Main() { ...
阅读全文
摘要:上次把一个类的构造函数、字段、属性的写法搞定了,这次轮到事件,讲事件当然就不能不提委托,当然方法也是不少了的(类方法嘛倒是从一开始就在用了,Main()也是类里的方法)。 既然要写一个完整点的东西喽,那就索性再声明一个自己的EventArgs类,这个类基本上什么事没有,只有一个属性返回当前的时间。 public class myEventArgs : EventArg...
阅读全文
摘要:在(三)里用一个求Fibonacci数列的程序来说明CodeDOM是如何生成一些程序的基本语句的。现在写程序很少会直接写几个方法来让Main()从头调到尾的,总是要用几个类来封装封装的。 在CodeDOM里一个类的字段、属性、事件(讲到事件,委托总是逃不了的)、方法等又是如何来生成的呢?上次只讲到了类方法(CodeMemberMethod),在CodeTypeMember这个重量...
阅读全文
摘要:先讲一个简单的程序,把变量声明、赋值、if语句、for循环等讲掉,这些是程序的基本的东东,再顺便带一下异常处理。就是一个比(一)复杂一点的控制台程序而已,关于类方面的东西下次再来。 找来找去找了个Fibonacci数列的程序,这个输入输出比较的简单,而且基本流程代码都有。当然真的实际生成不会去生成这种的程序,现在主要是“借”它一用。 先看生成的程序,下面就是用CodeDOM生成的代码: ...
阅读全文
摘要:昨天本来已经洋洋洒洒地写了一个程序,准备直接切入正题了,但昨天写的过程中发现了解一下CodeDOM的类层次结构还是有好处,今天先写这个了,顺便讲讲基本的概念。 System.CodeDOM这个命名空间的大多数类都是从System.CodeDOM.CodeObject这个类(而它直接从System.Object而来)继承的,大头都在这里,烦的也在这里了。 System.Object...
阅读全文
摘要:以前走马观灯似的看.NET Framework SDK文档,也没怎么注意它的CodeDOM机制,很多东西一略而过,“喔,有这么回事呀”就算了,至于如何回事其实也是不甚明了。现在工作上的需要要用到这方面的东西,再仔细一看,不得了,.NET Framework的这个CodeDOM太厉害了。 .NET Framework 中包含一个名为“代码文档对象模型”(CodeDOM) 的机制,该机制使编写...
阅读全文