字段配置
本页介绍 C# 生成序列化器的字段级配置。
[ForyObject] 与 [Field]
使用 [ForyObject] 启用 source generator 生成序列化器。使用 [Field] 可以为某个字段覆盖整数编码方式。
using Apache.Fory;
[ForyObject]
public sealed class Metrics
{
// 定长 32 位编码
[Field(Encoding = FieldEncoding.Fixed)]
public uint Count { get; set; }
// Tagged 64 位编码
[Field(Encoding = FieldEncoding.Tagged)]
public ulong TraceId { get; set; }
// 默认(varint)编码
public long LatencyMicros { get; set; }
}
可用编码
| 编码 | 含义 |
|---|---|
FieldEncoding.Varint | 变长整数编码,默认值 |
FieldEncoding.Fixed | 定长整数编码 |
FieldEncoding.Tagged | Tagged 整数编码,仅支持 long / ulong |
支持覆盖编码的字段类型
[Field(Encoding = ...)] 当前可应用于:
intuintlongulong
可空值类型变体,例如 long?,也会由生成的序列化器处理。
可空性与引用跟踪
- 字段可空性来自 C# 类型的可空声明,例如
string?、可空值类型等。 - 引用跟踪由运行时的
ForyBuilder.TrackRef(...)控制。