2012-09-23 48 views
0

我想以与使用枚举相同的方式使用一小串字符串。我想将字符串属性限制为一组字符串值的最佳方法

  1. 限制可能的属性值,这些预设选项
  2. 有intelisence在我的项目显示这些选项
  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; } 
} 

什么是这样做的最佳方式吗?

+0

有一个在CodeProject上一个聪明的解决方案,可以帮助你: http://www.codeproject.com/Articles/11130/String-Enumerations-in-C – GoRoS

回答

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; 
相关问题