-1

如果我有以下情况:

public enum TYPE
{
   One = 1,
   Two = 2,
   Three = 3
}

当我做:

 var a = TYPE.One;

我希望它用"01" 格式的字符串填充变量 a 。换句话说,两个数字前导零。

是否可以通过为 SomeEnum 分配一些方法来做到这一点?我意识到我可以使用 TYPE.One.ToString("00") 但我希望它在枚举中自包含并且使用起来非常简单。

4

3 回答 3

2

可以做这样的事情:

public static class Ext {

    public static string ToMyString(this Enumer en ) {
         return ((int)en).ToString("00");
    }
}

并在使用后像:

public enum TYPE { One = 1, Two = 2, Three = 3 }
Type t = TYPE.One; 

string s = t.ToMyString();

是的,从概念上讲,它与声明字符串相同,但它隐藏在扩展方法中。

其他解决方案是:在这一点上简单地避免以这种enums方式使用。

于 2012-09-14T12:10:47.703 回答
2

您可以使用 description 属性向每个枚举元素添加一个字符串。

例如

public Enum MyEnum
{
    [Description("Value A Description")]
    ValueA,
    [Description[("Value B Description")]
    ValueB
}

要检索描述值,请使用扩展器类

public static class MyEnumExtender
{
    public static string Description(this Enum Value)
    {
        FieldInfo FI = Value.GetType().GetField(Value.ToString());
        IEnumerable<DescriptionAttribute> Attributes = FI.GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>();
        return (Attributes.Any()) ? Attributes.First().Description : Value.ToString();
    }
}

....

MyEnum EnumVar = MyEnum.ValueA;
string Description = EnumVar.Description();
于 2012-09-14T12:12:46.560 回答
1

不要为此使用枚举,而是使用字典或哈希之类的东西。当存在一组有限的可能性并且您不想要或不需要值时,枚举就在那里。它如何存储无关紧要。

于 2012-09-14T12:00:58.150 回答