繁体   English   中英

如何显示带有特殊字符集的枚举V1.0,V2.0和V3.0

[英]how to display enum with set of special charaters as V1.0, V2.0 and V3.0

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

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

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

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

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

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

您不能使用. 在标识符名称中。

请参阅标识符C#规范

您能做的最好的事情是:

enum value
{
    V1dot0,
    V2dot0,
    V3dot0
}

要么

enum value
{
    V10,
    V20,
    V30
}

要么

enum value
{
    V1_0,
    V2_0,
    V3_0
}

或使用Koen建议的Description属性。

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

  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" 

您还可以使用readonly数组:

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

我知道做到这一点的唯一解决方法是通过此处描述的描述

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

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

}

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

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();`

有关此链接的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM