-
-
Notifications
You must be signed in to change notification settings - Fork 255
Open
Description
Having required members together with circular reference serialization causes CS9035 (required member must be set in the object initializer or attribute constructor) compilation error in generated file. The issue present only if GenerateType
is CircularReference
.
Reproduction Steps
[MemoryPackable(GenerateType.CircularReference, SerializeLayout.Explicit)]
public partial class Category
{
[MemoryPackOrder(0)]
public required string Id { get; init; }
[MemoryPackOrder(1)]
public required string Name { get; init; }
[MemoryPackOrder(3)]
public required Category[] Subcategories { get; init; }
}
Expected behavior
Source generated file compiles as expected.
Workaround
Remove required
keyword and use null-forgiving operator where needed:
[MemoryPackable(GenerateType.CircularReference, SerializeLayout.Explicit)]
public partial class Category
{
[MemoryPackOrder(0)]
public string Id { get; init; } = null!;
[MemoryPackOrder(1)]
public string Name { get; init; } = null!;
[MemoryPackOrder(3)]
public Category[] Subcategories { get; init; } = null!;
}
Metadata
Metadata
Assignees
Labels
No labels