Comptime – C# meta-programming with compile-time code generation and evaluation
2 months ago
- #compile-time
- #dotnet
- #meta-programming
- Comptime是一个.NET源代码生成器,能在编译时执行方法并将其结果序列化为C#代码
- 标记为[Comptime]的方法会在编译期间执行,其返回值会被序列化为C#源代码
- 支持使用常量表达式作为参数在编译时执行方法
- 支持的返回类型包括基本类型和不可变集合,如IReadOnlyList<T>和IReadOnlyDictionary<TKey, TValue>
- 由于可变性,数组不能作为返回类型,应改用IReadOnlyList<T>
- 支持的参数类型包括字面量、集合初始化器、表达式、常量值和枚举成员
- 使用C#拦截器在运行时用预计算值替换方法调用
- 需要.NET 8.0或更高版本以及C# 12或更高版本以支持拦截器功能
- 方法必须是静态的,包含类必须是partial类,参数必须是编译时常量表达式
- 错误代码包括不支持返回类型、编译发出失败和方法执行失败等问题
- 采用MIT许可证授权