![](/img/trans.png)
[英]change in config.DataServiceBehavior.MaxProtocolVersion from V3.0 to V2.0 cannot revert
[英]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
}
您必须声明没有点的枚举,例如
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.