StringEnumGenerator.Attributes
1.0.0-preview4
This is a prerelease version of StringEnumGenerator.Attributes.
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package StringEnumGenerator.Attributes --version 1.0.0-preview4
NuGet\Install-Package StringEnumGenerator.Attributes -Version 1.0.0-preview4
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-preview4" />
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-preview4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: StringEnumGenerator.Attributes, 1.0.0-preview4"
#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.Attributes as a Cake Addin #addin nuget:?package=StringEnumGenerator.Attributes&version=1.0.0-preview4&prerelease // Install StringEnumGenerator.Attributes as a Cake Tool #tool nuget:?package=StringEnumGenerator.Attributes&version=1.0.0-preview4&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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)
{
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in 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 | 1,661 | 11/14/2021 |
1.0.0-preview5 | 257 | 11/14/2021 |
1.0.0-preview4 | 261 | 11/14/2021 |
1.0.0-preview3 | 211 | 11/10/2021 |
1.0.0-preview2 | 210 | 11/8/2021 |
1.0.0-preview1 | 205 | 11/8/2021 |