Hasty Briefsbeta

双语

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许可证授权