convert an enum to another type of enum

前端 未结 15 1595
感动是毒
感动是毒 2020-11-30 02:36

I have an enum of for example \'Gender\' (Male =0 , Female =1) and I have another enum from a service which has its own Gender enum (Male =0

15条回答
  •  被撕碎了的回忆
    2020-11-30 03:20

    In case when the enum members have different values, you can apply something like this:

    public static MyGender? MapToMyGender(this Gender gender)
    {
        return gender switch
        {
            Gender.Male => MyGender.Male,
            Gender.Female => MyGender.Female,
            Gender.Unknown => null,
            _ => throw new InvalidEnumArgumentException($"Invalid gender: {gender}")
        };
    }
    

    Then you can call: var myGender = gender.MapToMyGender();

    Update: This previous code works only with C# 8. For older versions of C#, you can use the switch statement instead of the switch expression:

    public static MyGender? MapToMyGender(this Gender gender)
    {
        switch (gender)
        {
            case Gender.Male: 
                return MyGender.Male;
            case Gender.Female:
                return MyGender.Female;
            case Gender.Unknown:
                return null;
            default:
                throw new InvalidEnumArgumentException($"Invalid gender: {gender}")
        };
    }
    

提交回复
热议问题