执行时代码生成技术详解
1. 引言
传统的 C++ 编程采用编译时生成代码的方式,程序在编译时就已经完全确定,属于静态系统。而 .NET 的公共语言运行时(CLR)提供了一种新的方式,不仅保留了编译时的特性,还支持构建动态系统,可通过加载程序集或即时编写自定义代码来添加新的功能。
2. 加载程序集
2.1 构建日志记录工具
首先,我们要构建一个简单的日志记录工具,它可以在运行时由用户扩展,将信息消息发送到其他地方。具体步骤如下:
1.定义接口和类:
// file=LogDriver.cs // compile with: csc /target:library LogDriver.cs using System; using System.Collections; public interface ILogger { void Log(string message); } public class LogDriver { ArrayList loggers = new ArrayList(); public LogDriver() { } public void AddLogger(ILogger logger) { loggers.Add(logger); } public void Log(string message) { foreach (ILogger logger in loggers)