ardalis/SmartEnum

Add source generator

Aperta

#259 aperta il 18 apr 2022

 (7 commenti) (5 reazioni) (0 assegnatari)C# (185 fork)github user discovery
enhancementgood first issuehelp wanted

Metriche repository

Star
 (2420 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

This could be improved further with source generators:

Allowing you to just decorate a partial class like so:

using Ardalis.SmartEnum;

[SmartEnum]
public sealed partial class TestEnum
{
    [EnumMember]
    public static readonly TestEnum One;

    [EnumMember]
    public static readonly TestEnum Two;

    [EnumMember]
    public static readonly TestEnum Three;
}

Generated code:

using Ardalis.SmartEnum;

sealed partial class TestEnum : SmartEnum<TestEnum>
{
    private TestEnum(string name, int value) : base(name, value)
    {
        One = new TestEnum(nameof(One), 1);
        Two = new TestEnum(nameof(Two), 2);
        Three = new TestEnum(nameof(Three), 3);
    }
}

Guida contributor