StringEnumGenerator 1.0.0-preview5

This is a prerelease version of StringEnumGenerator.
There is a newer version of this package available.
See the version list below for details.
dotnet add package StringEnumGenerator --version 1.0.0-preview5                
NuGet\Install-Package StringEnumGenerator -Version 1.0.0-preview5                
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" Version="1.0.0-preview5">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StringEnumGenerator --version 1.0.0-preview5                
#r "nuget: StringEnumGenerator, 1.0.0-preview5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StringEnumGenerator as a Cake Addin
#addin nuget:?package=StringEnumGenerator&version=1.0.0-preview5&prerelease

// Install StringEnumGenerator as a Cake Tool
#tool nuget:?package=StringEnumGenerator&version=1.0.0-preview5&prerelease                

StringEnumGenerator

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")]
    Carrot,
    [StringEnum(Display = "Fresh Lettruce", Value = "lettruce")]
    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
{
    Apples,
    Oranges,
}

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)
{

}
There are no supported framework assets in this package.

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 564 11/14/2021
1.0.0-preview5 392 11/14/2021
1.0.0-preview4 1,106 11/14/2021
1.0.0-preview3 330 11/10/2021
1.0.0-preview2 345 11/8/2021
1.0.0-preview1 274 11/8/2021