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

with列挙値を使用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 に答える