Bluehill.Analyzers

EnumExtensionsGenerator

This generator generates ToStringFast and HasFlagFast extension methods for enumerations.

Attribute definition (Without Bluehill.Analyzers.Attributes package)

namespace Bluehill;

[AttributeUsage(AttributeTargets.Enum)]
internal sealed class EnumExtensionsAttribute : Attribute;

Example usage

namespace ConsoleApp1;

[EnumExtensions]
public enum MyEnum {
    A,
    B,
    C
}

[EnumExtensions]
[Flags]
public enum MyEnum2 {
    None = 0,
    A = 1,
    B = 2,
    C = 4
}

Example generated code

using static ConsoleApp1.MyEnum;

namespace ConsoleApp1;

public static class MyEnumExtensions {
    public static string ToStringFast(this MyEnum value) => value switch {
        A => nameof(A),
        B => nameof(B),
        C => nameof(C),
        _ => value.ToString()
    };
}
using static ConsoleApp1.MyEnum2;

namespace ConsoleApp1;

public static class MyEnum2Extensions {
    public static string ToStringFast(this MyEnum2 value) => value switch {
        None => nameof(None),
        A => nameof(A),
        B => nameof(B),
        C => nameof(C),
        _ => value.ToString()
    };

    [System.Runtime.CompilerServices.MethodImplAttribute(256)]
    public static bool HasFlagFast(this MyEnum2 value, MyEnum2 flag) => (value & flag) == flag;
}