2012-09-23 50 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; 
相關問題