ardalis/SmartEnum

Add source generator

開放

#259 建立於 2022年4月18日

 (7 則留言) (5 個反應) (0 位負責人)C# (185 個分叉)github user discovery
enhancementgood first issuehelp wanted

倉庫指標

星標
 (2,420 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

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);
    }
}

貢獻者指南