如何使用空格枚举值?

CJ7*_*CJ7 24 .net c# vb.net enums

如何使用枚举实现以下功能.NET?我想对每个包含空格的值进行描述.

public enum PersonGender
    {
        Unknown = 0,
        Male = 1,
        Female = 2,
        Intersex = 3,
        Indeterminate = 3,
        Non Stated = 9,
        Inadequately Described = 9
    }
Run Code Online (Sandbox Code Playgroud)

我希望能够在每次使用此类型的值时选择是使用描述还是整数.

p.s*_*w.g 40

不,这是不可能的,但您可以将属性附加到enum成员.它EnumMemberAttribute的设计完全符合您所描述的目的.

public enum PersonGender
{
    Unknown = 0,
    Male = 1,
    Female = 2,
    Intersex = 3,
    Indeterminate = 3,

    [EnumMember(Value = "Not Stated")]
    NonStated = 9,

    [EnumMember(Value = "Inadequately Described")]
    InadequatelyDescribed = 9
}
Run Code Online (Sandbox Code Playgroud)

有关如何使用EnumMemberAttribute将字符串转换为enum值的更多信息,请参阅此主题.


the*_*yer 5

这很简单.为您的字符串创建一个扩展方法,该方法根据您的编码约定返回格式化字符串.你可以在很多地方使用它,而不仅仅是在这里.这个适用于camelCase和TitleCase.

    public static String ToLabelFormat(this String s)
    {
        var newStr = Regex.Replace(s, "(?<=[A-Z])(?=[A-Z][a-z])", " ");
        newStr = Regex.Replace(newStr, "(?<=[^A-Z])(?=[A-Z])", " ");
        newStr = Regex.Replace(newStr, "(?<=[A-Za-z])(?=[^A-Za-z])", " ");

        return newStr;
    }
Run Code Online (Sandbox Code Playgroud)