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值的更多信息,请参阅此主题.
这很简单.为您的字符串创建一个扩展方法,该方法根据您的编码约定返回格式化字符串.你可以在很多地方使用它,而不仅仅是在这里.这个适用于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)