我想以与使用Enums相同的方式使用一小组字符串。我想
以下是我目前所拥有的内容:
public enum StatusOptions
{
OptionOk = 1, OptionDisabled = 0
}
public class User()
{
public StatusOptions Status { get; set; }
}
这是我想做的事情 - 但不能因为Enums仅限于int
public string[] StatusOptions
{
"ok", "disabled"
}
public class User()
{
public StatusOptions Status { get; set; }
}
这样做的最佳方式是什么?
答案 0 :(得分:3)
您可以将DescriptionAttribute
与枚举值一起使用 - 当您需要获取可以使用reflection to retrieve the value of this attribute的字符串时。
public enum StatusOptions
{
[Decription("ok")]
OptionOk = 1,
[Decription("disabled")]
OptionDisabled = 0
}
答案 1 :(得分:1)
请参阅此C# String enums
这应该满足您的大部分条件:
public sealed class StatusOptions {
private readonly int value;
public int Value
{
get{ return value;}
}
private readonly string desc;
public string Description
{
get{ return desc;}
}
public static readonly StatusOptions OptionDisabled = new StatusOptions (0,"Disabled");
public static readonly StatusOptions OptionOk = new StatusOptions (1, "Ok");
private StatusOptions(int value, string desc){
this.value = value;
this.Description = desc;
}
}
用法:
StatusOptions s1 = StatusOptions.OptionOk;
int val = s1.Value;
string desc = s1.Description;