Field Configuration
This page covers field-level serializer configuration for C# generated serializers.
[ForyObject] and [Field]
Use [ForyObject] to enable source-generated serializers. Use [Field] to override integer encoding for a specific field.
using Apache.Fory;
[ForyObject]
public sealed class Metrics
{
// Fixed-width 32-bit encoding
[Field(Encoding = FieldEncoding.Fixed)]
public uint Count { get; set; }
// Tagged 64-bit encoding
[Field(Encoding = FieldEncoding.Tagged)]
public ulong TraceId { get; set; }
// Default (varint) encoding
public long LatencyMicros { get; set; }
}
Available Encodings
| Encoding | Meaning |
|---|---|
FieldEncoding.Varint | Variable-length integer encoding (default) |
FieldEncoding.Fixed | Fixed-width integer encoding |
FieldEncoding.Tagged | Tagged integer encoding (long / ulong only) |
Supported Field Types for Encoding Override
[Field(Encoding = ...)] currently applies to:
intuintlongulong
Nullable value variants (for example long?) are also handled by generated serializers.
Nullability and Reference Tracking
- Field nullability comes from C# type nullability (
string?, nullable value types, etc.). - Reference tracking is controlled at runtime by
ForyBuilder.TrackRef(...).