This generator generates ToStringFast and HasFlagFast extension methods for enumerations.
Bluehill.Analyzers.Attributes
package)namespace Bluehill;
[AttributeUsage(AttributeTargets.Enum)]
internal sealed class EnumExtensionsAttribute : Attribute;
namespace ConsoleApp1;
[EnumExtensions]
public enum MyEnum {
A,
B,
C
}
[EnumExtensions]
[Flags]
public enum MyEnum2 {
None = 0,
A = 1,
B = 2,
C = 4
}
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;
}