因为我无法在枚举中占用空间而我正在尝试做类似的事情,但似乎不喜欢它....
public enum EnumState
{
NewYork,
NewMexico
}
public EnumState State
{
get
{
return EnumState ;
}
set
{
if (EnumState .ToString() == "NewYork".ToString())
{
value = "New York".ToString();
EnumState = value;
}
}
}
答案 0 :(得分:3)
我已经看到这通常是通过在枚举成员上放置[StringValue("New York")]
属性来处理的。快速谷歌搜索返回this blog post,,这有很好的方法。
基本上制作属性类:
public class StringValueAttribute : Attribute {
public string StringValue { get; protected set; }
public StringValueAttribute(string value) {
this.StringValue = value;
}
}
以及访问它的扩展方法:
public static string GetStringValue(this Enum value) {
// Get the type
Type type = value.GetType();
// Get fieldinfo for this type
FieldInfo fieldInfo = type.GetField(value.ToString());
// Get the stringvalue attributes
StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes(
typeof(StringValueAttribute), false) as StringValueAttribute[];
// Return the first if there was a match, or enum value if no match
return attribs.Length > 0 ? attribs[0].StringValue : value.ToString();
}
那么你的枚举会是这样的:
public enum EnumState{
[StringValue("New York")]
NewYork,
[StringValue("New Mexico")]
NewMexico,
}
您可以使用myState.GetStringValue();
答案 1 :(得分:1)
您可以使用此模式:C# String enums
它允许您为枚举中的每个枚举定义自定义字符串名称。