enum с пробелом для выпадающего списка - PullRequest
0 голосов
/ 12 сентября 2011

, так как у меня не может быть места в enum, и я пытаюсь сделать что-то подобное, но, похоже, это не нравится ....

public enum EnumState
{
    NewYork,
    NewMexico
}


public EnumState State
    {
        get
        {
            return EnumState ;
        }
        set
        {
            if (EnumState .ToString() == "NewYork".ToString())
            {
                value = "New York".ToString();
                EnumState = value;
            }
        }
    }

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Я видел, что это обычно обрабатывается путем добавления атрибута [StringValue("New York")] к элементам enum.Быстрый поиск в Google возвращает это сообщение в блоге, , в котором есть довольно хороший способ сделать это.

По сути, создайте класс атрибута:

public class StringValueAttribute : Attribute {

    public string StringValue { get; protected set; }

    public StringValueAttribute(string value) {
        this.StringValue = value;
    }
}

И метод расширениячтобы получить к нему доступ:

   public static string GetStringValue(this Enum value) {
        // Get the type
        Type type = value.GetType();

        // Get fieldinfo for this type
        FieldInfo fieldInfo = type.GetField(value.ToString());

        // Get the stringvalue attributes
        StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes(
            typeof(StringValueAttribute), false) as StringValueAttribute[];

        // Return the first if there was a match, or enum value if no match
        return attribs.Length > 0 ? attribs[0].StringValue : value.ToString();
    }

Тогда ваше перечисление будет выглядеть так:

public enum EnumState{
  [StringValue("New York")]
  NewYork,
  [StringValue("New Mexico")]
  NewMexico,
}

, и вы можете просто использовать myState.GetStringValue();

1 голос
/ 12 сентября 2011

Вы можете использовать этот шаблон: C # String enums

Это позволит вам определить произвольное имя строки для каждого перечисления, которое есть в вашем перечислении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...