众所周知,Reflection.Emit是非常强大的工具,可以在运行时动态生成各种程序集.类型和方法的IL代码,几乎无所不能.原先我也是这样认为的,但是看了某个人的博客之后我发现想要用Reflection.Emit做一些特殊的事情还是很需要技巧性的.假设你还没有看过那个人的博客(暂时先不公开--)可以尝试一下这个问题.下面的代码可以用vbc.exe正确编译(当然等价C#程序也可以经试验C#编译器无法处理该逻辑,各位参照VB的行为吧)... Class A Implements B.I End C
众所周知,Reflection.Emit是非常强大的工具,可以在运行时动态生成各种程序集.类型和方法的IL代码,几乎无所不能.原先我也是这样认为的,但是看了某个人的博客之后我发现想要用Reflection.Emit做一些特殊的事情还是很需要技巧性的.假设你还没有看过那个人的博客(暂时先不公开--)可以尝试一下这个问题.下面的代码可以用vbc.exe正确编译(当然等价C#程序也可以经试验C#编译器无法处理该逻辑,各位参照VB的行为吧)... Class AImplements B.IEnd Cla
在上一篇博客中我提出了一个问题:如何用.NET的Reflection.Emit生成等价于下面VB代码的三个类型: Class A Implements B.I End Class Class B Inherits A Interface I End Interface End Class 这个问题的难点在于三个类型有循环依赖关系:A实现了接口B.I,因此A依赖于I:B是A的子类,因此B依赖于A:接口I是B的嵌套类型,因此I依赖于B.使用Reflection.Emit的时候最大的问题就是不管以何种