Skip to main content
Version: dev

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

EncodingMeaning
FieldEncoding.VarintVariable-length integer encoding (default)
FieldEncoding.FixedFixed-width integer encoding
FieldEncoding.TaggedTagged integer encoding (long / ulong only)

Supported Field Types for Encoding Override

[Field(Encoding = ...)] currently applies to:

  • int
  • uint
  • long
  • ulong

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(...).