如何将一组特殊字符显示为V1.0,V2.0和V3.0

时间:2014-01-30 09:09:24

标签: c# enums

如何在C#中将枚举值显示为V1.0,V2.0,V3.0?

enum value
{
    V1.0,
    V2.0,
    V3.0
}

7 个答案:

答案 0 :(得分:5)

可能的解决方案是使用DescriptionAttribute:

enum value
{
    [Description("V1.0")] 
    V1_0,

    [Description("V2.0")] 
    V2_0,

    [Description("V3.0")] 
    V3_0
}

答案 1 :(得分:3)

您无法在标识符名称中使用.

请参阅C# Specification on Identifiers

你能做的最好的事情就是:

enum value
{
    V1dot0,
    V2dot0,
    V3dot0
}

enum value
{
    V10,
    V20,
    V30
}

enum value
{
    V1_0,
    V2_0,
    V3_0
}

或使用像Koen建议的Description属性。

答案 2 :(得分:2)

你必须声明你的枚举没有点,例如

  public enum value {
    V1,
    V2,
    V3
  }

但您可以实现扩展方法来表示枚举值:

public static class valueExtensions {
  public static String ToReport(this value item) {
    switch (item) {
      case value.V1:
        return "V1.0";
      case value.V2:
        return "V2.0";
      case value.V3:
        return "V3.0";
      default:
        return "?"; 
    }
  }
}

...
value data = value.V1;
String result = data.ToReport(); // <- "V1.0" 

答案 3 :(得分:1)

您也可以使用readonly数组:

public readonly string[] value={"V1.0","V2.0","V3.0"};

答案 4 :(得分:0)

我知道这样做的唯一解决方法是通过描述here

答案 5 :(得分:0)

编写一个静态方法来显示它,或将其封装在一个类中并覆盖ToString方法。

ToString(enumValue eValue){
switch (eValue) {
    case V10: 
       return "V1.0";
       break;
    case V20: 
       return "V2.0";
       break;
}

}

答案 6 :(得分:0)

您不能将字符串值分配给枚举,但可以使用属性进行分配。您必须将数值与描述相关联

using System.ComponentModel;

namespace myCompany.MyProject.BO {

    public enum SampleTypes
    {
        // Default          
        [Description("- None -")]
        None=0,

        [Description("My type 1")]
        V1=1,

        [Description("My type 2")]
        V2=2,

        [Description("My type 3")]
        V3=3
    } }

然后你可以定义帮助方法来获取描述或用于绑定到下拉列表的键值对

  public static string GetDescription(System.Enum value)
    {
        FieldInfo FieldInfo = value.GetType().GetField(value.ToString());
        DescriptionAttribute[] attributes = (DescriptionAttribute[])FieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
   if ((attributes.Length > 0))
            return attributes[0].Description;
        else
            return value.ToString();
    }

    public static List<KeyValuePair<string, string>> GetValuesAndDescription(System.Type enumType)
    {
        List<KeyValuePair<string, string>> kvPairList = new List<KeyValuePair<string, string>>();
        foreach (System.Enum enumValue in System.Enum.GetValues(enumType))
        {
            kvPairList.Add(new KeyValuePair<string, string>(enumValue.ToString(), GetDescription(enumValue)));
        }
        return kvPairList;
    }

您可以通过这种方式绑定下拉列表

Helpers.GetValuesAndDescription(typeof(YourEnumName));
        YourDropDown.DataValueField = "Key";
        YourDropDown.DataTextField = "Value";
        YourDropDown.DataBind();`

More on this link