1.12.0-rc17

(fix): 当生成器配置中 use-discriminated-unionstrue 时,为联合类型生成代码片段。

1.12.0-rc16

(fix): 从 JsonElementComparer.cs 中删除硬编码的命名空间导入

1.12.0-rc15

(feat): 生成可辨识联合类型,具有以下特性:

  • 编译时检查的类型安全
  • 穷尽的判别值匹配
  • JSON 序列化支持

以下是如何使用形状可辨识联合类型的简单示例:

1var shape = new Shape(new Circle { Radius = 5 });
2
3// 类型检查
4if (shape.IsCircle) {
5 Console.WriteLine($"Radius: {circle.AsCircle().Radius}");
6}
7
8// 判别值匹配
9var area = shape.Match(
10 circle => Math.PI * circle.Radius * circle.Radius,
11 square => square.Length * square.Length,
12 (type, _) => throw new NotSupportedException($"Unknown: {type}")
13);
14
15// TryAs 模式
16if (shape.TryAsCircle(out var circle)) {
17 Console.WriteLine($"Radius: {circle.Radius}");
18}

为了保持向后兼容性,此功能默认关闭。 要启用它,请在生成器配置中将 use-discriminated-unions 设置为 true

(feat): 改进了普通对象和可辨识联合类型生成类的序列化测试。

(feat): 生成的类现在遵循 C# 约定来排序常量、字段、构造函数、属性、方法、运算符和内部类。