enum ValidationMessages
{
C01_OOHArrestRequired = "Test",
Trivial,
Regular,
Important,
Critical
};
我有上面的代码。我希望能够创建我可以使用的枚举但是字符串不是整数。
这样我就可以在UI中显示相同的字符串,用于验证错误,然后在我的单元测试中测试它们,并让消息来自同一个地方(静态)。
但它说“无法将字符串转换为int”
如何将enum
作为字符串?
答案 0 :(得分:3)
您不能拥有enum
类型string
,因为enums
是值类型(byte,sbyte,short,ushort,int,uint,long或ulong)。
而是使用const字段创建一个静态类:
public static class CardiologyValidationMessages
{
public const string C01_OOHArrestRequired = "OOH Arrest is required when 1 or more Procedures Performed has IsCoronary = True"
}
答案 1 :(得分:1)
你做不到。来自MSDN:
枚举的已批准类型是byte,sbyte,short,ushort,int,uint,long或ulong。
您可以使用字典将枚举映射到错误消息:Dictionary<CardiologyValidationMessages, string>
答案 2 :(得分:1)
"An enumeration is a set of named constants whose underlying type is any integral type"
但是,您可以编写转换函数。
string ToValidationMessageString(ValidationMessage value)
{
switch(value)
{
case C01_OOHArrestRequired:
return "Test";
default:
return value.ToString();
}
}
或其他一些。
答案 3 :(得分:0)
任何人都知道如何将枚举作为字符串吗?
你不能。
来自C#语言规范第5版(随Visual Studio 2013提供)第4.1.9节
枚举类型是具有命名常量的不同类型。每个枚举类型都有一个底层类型,必须是byte,sbyte,short,ushort,int,uint,long或ulong。
但是,您可以将DisplayAttribute
的名称应用于枚举值,然后使用常用的反射方法获取给定值的名称。