C#面试题更新 2026-08-05

请说明 .NET 中实现 IL Weaving 的机制与流程,并列举常见的 IL Weaving 工具及其适用场景。

技术原理技术选型C#.NET

考察说明

考查对 .NET 元数据与 IL 操作原理的理解,以及常用编织工具链的掌握程度。

回答思路

  1. 【回答框架 1】IL Weaving 是在程序集编译后、运行时或加载时修改中间语言代码的技术,用于横切关注点注入,例如 AOP 属性、INotifyPropertyChanged、性能监控等。其核心机制是先反编译已有程序集,修改 IL 指令流,再重新编译保存。
  2. 【回答框架 2】常用工具包括:Fody,基于模块初始化器和 MSBuild 任务,使用简单,适合大量场景;Mono.Cecil,底层库,可直接读写程序集,灵活度高;PostSharp,商业产品,提供声明式 AOP 特性,编译时织入;Roslyn 虽不直接织入 IL,但可通过分析器生成新代码。
  3. 【回答框架 3】实现流程通常为:读取程序集元数据,查找目标类型或方法,在 IL 流中插入新指令或修改现有指令,最后写回程序集。需注意版本兼容、强名称签名和性能开销。
  4. 【回答框架 4】选择工具时,若追求开发效率且场景常见,优先 Fody;若需深度自定义,选择 Mono.Cecil;若接受商业授权,PostSharp 提供更丰富的 AOP 能力。
  5. 【关键点 1】IL Weaving 是在编译后修改程序集 IL 代码的技术,常用于横切逻辑注入。
  6. 【关键点 2】Fody 提供易用的 weaving 框架,Mono.Cecil 是底层操作库,PostSharp 为商业 AOP 方案。
  7. 【关键点 3】修改 IL 需注意程序集签名、版本兼容和性能影响。
  8. 【易错点 1】忽略强名称签名导致程序集加载失败。
  9. 【易错点 2】修改 IL 后不验证逻辑正确性,可能导致运行时异常。
  10. 【易错点 3】过度依赖 weaving 增加调试与维护难度。