0

我想以与使用枚举相同的方式使用一个小字符串数组。我想

  1. 将可能的属性值限制为这些预设选项
  2. 让智能显示这些选项
  3. 与我项目中的其他对象共享此“OptionList”

这是我目前拥有的:

public enum StatusOptions
{
        OptionOk = 1, OptionDisabled = 0
}

public class User()
{
        public StatusOptions Status { get; set; }
}

这是我想做的-但不能因为枚举仅限于 int

public string[] StatusOptions
{
        "ok", "disabled"
}

public class User()
{
        public StatusOptions Status { get; set; }
}

这样做的最佳方法是什么?

4

2 回答 2

3

您可以使用DescriptionAttribute枚举值——当您需要获取字符串时,您可以使用反射来检索此属性的值

public enum StatusOptions
{
        [Decription("ok")]
        OptionOk = 1, 
        [Decription("disabled")]
        OptionDisabled = 0
}
于 2012-09-23T11:42:59.480 回答
1

请参阅此C# 字符串枚举

这应该满足您的大多数条件:

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;
于 2012-09-23T11:49:56.383 回答