深入浅出.NET代码生成系列
文章平均质量分 79
在.NET类库包含了可以用于代码生成的类,尽管在日常编程中用得不多,但我们有必须了解一下,我们可以用它来开发相关的扩展工具;而且,在有些层次比较复杂的大型项目中,也很有可能用到动态代码生成或动态编译。本系列以实例形式展示各种代码的生成方式。
东邪独孤
欢迎来到桃花岛宇宙万物尽在其中
展开
-
深入浅出.NET代码生成系列(7):动态生成代码与编译综合示例
前面说了这么多,大家可能会觉得,好像没弄出个玩意儿来啊,对啊,所以,本文就来个可以弄出个玩意儿的东东。说明一下,这是一个综合示例,分为两大部分,第一部分,生成代码,输出到控制台窗口中;第二部分,把这些代码动态进行编译,并生成一个WinForm应用程序,双击动态编译的程序可以运行起来,点击窗口上的按钮,会弹出一个对话框。好,下面我把整个示例的代码贴出来,很简单,你就新建一个控制台应用程序原创 2012-07-19 21:31:16 · 4053 阅读 · 2 评论 -
深入浅出.NET代码生成系列(6):语句
生成代码语句(可以理解为带分号结束的代码,除了if,for这些)所使用到的类,都是从CodeStatement,因此,要知道.NET类库所提供的类能生成哪些代码语句,从MSDN参考文档中找到CodeStatement类,然后,还是老方法,查看它的继承关系。就可以“一览众山小”。 我还是坚持老方法,不会从理论层面去介绍每个类如何使用,因为,我们要学习的内容,在MSDN上是绝对能找到的,因原创 2012-07-15 20:41:43 · 3376 阅读 · 0 评论 -
深入浅出.NET代码生成系列(5):表达式
表达式,这数量说起来就可观了,不过说起来它们都有共同的爹——CodeExpression类。在MSDN在查找CodeExpression类,从继承关系列表中我们就可以看到所有的与代码表达式生成有关的类。 哎哟,妈啊,这么多,你看到这一串家伙,害怕不?哈哈,不要害怕,别看它们“类”多势众,其实并不复杂,而且使用方法也差不多。至于一个个介绍嘛,那显然不现实的,也没有意义,既然MSDN上都有原创 2012-07-10 21:24:49 · 2809 阅读 · 0 评论 -
深入浅出.NET代码生成系列(4):定义类型
CodeTypeDeclaration类可以为我们定义类、结构、接口等。1、BaseTypes描述要定义类型的基类型。2、Members当然是定义类型的成员了,如属性、方法、事件等。3、IsClass、IsEnum、IsInterface、IsStruct这几个就好理解了。4、TypeAttributes就是对类型的特性描述了,比如public、static等。5、TypePa原创 2012-07-05 18:18:24 · 2789 阅读 · 0 评论 -
深入浅出.NET代码生成系列(3):命名空间
上一篇文章后面,我做了一个简单的示例,不知道各位有没有印象。哈,没印象也没关系,今天我们来探讨一下如何生成命名空间的代码。其实,说的就是CodeNamespace类,这个类就是用来生成命名空间定义的代码的。(1)Imports属性:一个CodeNamespaceImport对象的集合,这个CodeNamespaceImport类与CodeNamespace类有啥不同呢?CodeNamesp原创 2012-06-30 21:07:14 · 2924 阅读 · 1 评论 -
深入浅出.NET代码生成系列(2):一些基本类
既然叫“深入浅出”了,那我们先来深一下,好吧? 一、用到了哪些命名空间?说白了,基本上与代码生有关的类都在System.CodeDom命名空间和System.CodeDom.Compiler。不知道各位对这两个命名空间熟悉指数是多少? 二、CodeDomProvider类该类位于System.CodeDom.Compiler命名空间下,它是一个抽象类,有朋友可以疑问了,这…原创 2012-06-28 21:41:47 · 4673 阅读 · 1 评论 -
深入浅出.NET代码生成系列(1):概述
Visual Studio之所以强大,就因为它能为开发者尽可能地生成一些代码,免去了我们经常性去做一些无意义的,机械化的操作,从而使开发者不必把时间和精力都花在细枝末节上,能更专心于程序的核心部分,开发效率也大大提高。说到这代码生成,实话说,在日常的开发任务中,似乎使用的频率不高,而且,动态编译也有一个消耗性能的过程。那么,我们需要对代码生成有点了解吗?应该说是有这个需要的,说不定哪一天会原创 2012-06-27 11:09:58 · 6977 阅读 · 8 评论