FastEnumToString 2.0.0-beta

This is a prerelease version of FastEnumToString.
There is a newer version of this package available.
See the version list below for details.
dotnet add package FastEnumToString --version 2.0.0-beta                
NuGet\Install-Package FastEnumToString -Version 2.0.0-beta                
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="FastEnumToString" Version="2.0.0-beta">
  <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 FastEnumToString --version 2.0.0-beta                
#r "nuget: FastEnumToString, 2.0.0-beta"                
#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 FastEnumToString as a Cake Addin
#addin nuget:?package=FastEnumToString&version=2.0.0-beta&prerelease

// Install FastEnumToString as a Cake Tool
#tool nuget:?package=FastEnumToString&version=2.0.0-beta&prerelease                

FastEnumToString

Source Generator generating ToString extension methods for any enums.

Configure

Global configuration:

<PropertyGroup>
    <FastEnumDefaultBehaviour>Default</FastEnumDefaultBehaviour>
</PropertyGroup>

Or you can use the [ToString] attribute to override the global configuration by calling its parameterized constructor:

[ToString(ToStringDefault.First)]

Available values (for both):

  • Default: Same as Throw
  • First: uses the first avalilable enum member in the switch's default arm,
  • Throw: throwing an ArgumentOutOfRangeException

*the csproj configuration is case insensitive

Example

using FastEnumToString;

Color color = (Color)5;

Console.WriteLine(color);
Console.WriteLine(color.FastToString());
Console.WriteLine(Asd<int, List<int>>.FFF.None.FastToString());
Console.WriteLine(EnumStringConverter.FastToString(Asd<int, List<int>>.FFF.None));

namespace MyNamespace
{
    public class NestingClass<T, K>
        where T : struct
        where K : class, new()
    {
        [ToString]
        public enum NestedInClassEnum
        {
            None
        }
    }
    
    [ToString(ToStringDefault.First)]
    public enum Color
    {
        Red,
        Green,
        Blue,
    }

    [Flags] // Flags are not yet supported
    public enum Options
    {
        ToString = 1,
        Parse = 2,
        HasFlag = 4,
    }
}

The followning will be generated:

// <auto-generated/>

namespace ToStringExample
{
    [global::System.CodeDom.Compiler.GeneratedCode("FastEnumToString", "2.0.0")]
    public static class EnumStringConverter
    {
        public static string FastToString<T, K>(this MyNamespace.NestingClass<T, K>.NestedInClassEnum enumValue)
            where T : struct
            where K : class, new()
        => enumValue switch
        {
            MyNamespace.NestingClass<T, K>.NestedInClassEnum.None => nameof(MyNamespace.NestingClass<T, K>.NestedInClassEnum.None),
            _ => throw new global::System.ArgumentOutOfRangeException(nameof(enumValue), enumValue, $"Value: '{(int)enumValue}' cannot be found in the provided enum type!")
        };

        public static string FastToString(this MyNamespace.Color enumValue) => enumValue switch
        {
            MyNamespace.Color.Red => nameof(MyNamespace.Color.Red),
            MyNamespace.Color.Green => nameof(MyNamespace.Color.Green),
            MyNamespace.Color.Blue => nameof(MyNamespace.Color.Blue),
            _ => nameof(MyNamespace.Color.Red)
        };
    }
}
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
2.0.0 2,439 1/29/2023 2.0.0 is deprecated because it is no longer maintained.
2.0.0-beta 1,718 1/6/2023
1.2.0 1,997 3/31/2022
1.1.2 1,913 3/29/2022
1.1.1 2,043 3/28/2022
1.1.0 1,914 3/28/2022
1.0.3 1,891 1/20/2022
1.0.2.1 1,973 1/11/2022
1.0.2 2,023 1/10/2022
1.0.1 1,761 1/9/2022
1.0.0 1,692 1/4/2022

Generator is reimplemented as an incremental generator. From now users must opt-in for FastToString method generation!