【发布时间】:2010-09-24 13:28:44
【问题描述】:
有一些工具,例如PostSharp,可以在编译时生成代码。
它是如何完成的?谁能提供一些简单的例子?
【问题讨论】:
标签: c# .net code-generation compilation
有一些工具,例如PostSharp,可以在编译时生成代码。
它是如何完成的?谁能提供一些简单的例子?
【问题讨论】:
标签: c# .net code-generation compilation
PostSharp 是一个 IL 重写器。它加载由 .NET 编译器生成的程序集并修改生成的 IL。称这种“生成代码”只是技术上的准确,它肯定不是 C# 编译器可以编译的那种代码。
自己做这件事并不简单,你必须具备理解 IL 的黑带技能。弄错会产生非常难以诊断的问题。我认为有一些开源项目使用了 IL 重写技术,比如 Spring.NET,它们应该是一个很好的起点,以实现这一点。在谷歌搜索“IL rewriter”时,我确实看到了出色的点击率。确实希望在上面花费大量时间。它也是一个高维护项目,.NET 的新版本经常会破坏重写器。
【讨论】: