如何在编译时生成代码?

时间:2010-09-24 13:28:44

标签: c# .net code-generation compilation

有些工具,如PostSharp,在编译时会生成代码。

怎么做?任何人都可以提供一些简单的例子吗?

1 个答案:

答案 0 :(得分:4)

PostSharp是IL-rewriter。它加载由.NET编译器生成的程序集并修改生成的IL。调用这个'生成代码'只是技术上准确,它肯定不是那种C#编译器可以编译的代码。

自己做这件事并不是一件轻而易举的事,你必须具备理解IL的黑带技能。做错会导致很难诊断问题。我认为有一些开源项目使用IL重写技术,比如Spring.NET,它们应该是实现这一目标的良好起点。谷歌搜索“IL重写器”时,我确实看到了很棒的点击率。期望在它上面燃烧相当多的时间。它也是一个高维护项目,.NET的新版本经常打破重写器。