StringEnumGenerator.Attributes 1.0.0

.NET Standard 2.0
dotnet add package StringEnumGenerator.Attributes --version 1.0.0
NuGet\Install-Package StringEnumGenerator.Attributes -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StringEnumGenerator.Attributes" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StringEnumGenerator.Attributes --version 1.0.0
#r "nuget: StringEnumGenerator.Attributes, 1.0.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install StringEnumGenerator.Attributes as a Cake Addin
#addin nuget:?package=StringEnumGenerator.Attributes&version=1.0.0

// Install StringEnumGenerator.Attributes as a Cake Tool
#tool nuget:?package=StringEnumGenerator.Attributes&version=1.0.0


Source generator augumenting Enumerations.

dotnet add package StringEnumGenerator
dotnet add package StringEnumGenerator.Attributes

String enums

using StringEnumGenerator.Attributes;
public enum Food
    [StringEnum(Display = "Orange Carrot", Value = "orange_carrot")]
    [StringEnum(Display = "Fresh Lettruce", Value = "lettruce")]

// Annotating enums with StringEnum lets you serialize and/or parse enums using these strings
Food.Carrot.ToDisplayString(); // returns "Orange Carrot"
Food.Carrot.ToValueString(); // returns "orange_carrot"

// You can also parse string identifiers to enum member
// FoodHelper is class automatically generated for you
FoodHelper.TryParseDisplayString("Orange Carrot", out Food food); // returns true
Food food = FoodHelper.ParseDisplayString("orange carrot", StringComparison.OrdinalIgnoreCase); // returns Food.Carrot

FoodHelper.TryParseValueString("orange_carrot", out Food food); // returns true
Food food = FoodHelper.ParseValueString("Orange_Carrot", StringComparison.OrdinalIgnoreCase); // returns Food.Carrot

Fast, enum operations without reflection or memory allocation

Just including this source genrator give following benefits for all enums

public enum Food

Food.Apples.ToStringFast(); // faster ToString implementation which does not use reflection or allocates any memory

// FoodHelper class is generated by source generator
FoodHelper.Parse("Apples"); // faster implementation based on string without memory allocation
FoodHelper.TryParse("Apples", out Food food) // same here

// immutable array containg all members of enum, does not use reflection and allocates array on demand
// array is created in lazy manner (you pay tax only if you use it)
foreach(var food in FoodHelper.AllMembers)

Product Versions
.NET net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows
.NET Core netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1
.NET Standard netstandard2.0 netstandard2.1
.NET Framework net461 net462 net463 net47 net471 net472 net48 net481
MonoAndroid monoandroid
MonoMac monomac
MonoTouch monotouch
Tizen tizen40 tizen60
Xamarin.iOS xamarinios
Xamarin.Mac xamarinmac
Xamarin.TVOS xamarintvos
Xamarin.WatchOS xamarinwatchos
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 1,533 11/14/2021
1.0.0-preview5 173 11/14/2021
1.0.0-preview4 176 11/14/2021
1.0.0-preview3 120 11/10/2021
1.0.0-preview2 119 11/8/2021
1.0.0-preview1 105 11/8/2021