| name | csharpessentials-enums |
| description | Use when you need enum-to-string serialization without reflection — [StringEnum] source generator produces compile-time ToString(), Parse(), and TryParse() methods that are NativeAOT-safe and zero-allocation. |
CSharpEssentials.Enums
[StringEnum] is a source generator attribute that produces fast, reflection-free string conversion methods for enum types. Safe for NativeAOT and Blazor WASM.
Installation
dotnet add package CSharpEssentials.Enums
Namespace
using CSharpEssentials.Enums;
Usage
[StringEnum]
public enum OrderStatus { Pending, Processing, Shipped, Delivered, Cancelled }
[StringEnum]
public enum UserRole { Admin, Editor, Viewer }
The source generator emits at compile time:
string s = OrderStatus.Shipped.ToStringFast();
bool parsed = OrderStatus.TryParse("Shipped", out OrderStatus status);
OrderStatus s = OrderStatus.Parse("Shipped");
JSON Integration
ConditionalStringEnumConverter (in CSharpEssentials.Json) serializes [StringEnum]-decorated enums as strings and all others as integers:
options.Converters.Add(new ConditionalStringEnumConverter());
Best Practices
- Apply
[StringEnum] to any enum that appears in API responses, logs, or database columns as text
- Combine with
ConditionalStringEnumConverter so string enums serialize naturally in ASP.NET Core
- Generated methods are NativeAOT-safe — no
RuntimeReflectionExtensions involved