Emit学习-基础篇-为动态类添加属性、构造函数、方法

我们通过一个计算A+B的动态类来演示如何为一个动态类添加属性、构造函数、方法,以及在方法中使用类中定义的属性,按照惯例,我们先给出要实现的动态类的C#代码,然后再针对C#代码给出相应的实现,代码如下:

Add

前面的步骤和之前的斐波那契实现相同,这里我们直接从属性的定义开始。首先,我们通过TypeBuilder对象的DefineField方法来定义私有字段_a_b,并为它们设置默认值0,代码如下:

定义私有字段_a和_b

然后我们通过TypeBuilder对象的DefineProperty方法分别定义属性AB;接着再通过PropertyBuilderSetGetMethodSetSetMethod方法设置它们的getset方法,至于getset方法的IL代码的生成则和普通的Method定义相同,这里只列出属性A的定义,属性BA相同,代码如下:

定义公有属性A和B

最后,我们来定义构造函数和Calc方法,构造函数的定义使用TypeBuilderDefineConstructor方法,获得一个ConstructorBuilder对象,接下来就转入到跟普通的方法定义相同的步骤,代码如下:

定义构造函数和方法
到这里,我们终于完成了动态类的创建,最后,同样给出完整的源码下载 A+B,希望这系列的文章能够对大家有帮助。

posted on 2009-03-22 20:07  yingql  阅读(4182)  评论(6编辑  收藏  举报

导航