Получить имя строки из Enum в C # - PullRequest
0 голосов
/ 20 мая 2018

Я объявил enum как показано ниже

public enum State
    {
        KARNATAKA = 1,
        GUJRAT = 2,
        ASSAM = 3,
        MAHARASHTRA = 4,
        GOA = 5
    }

Из внешних источников я получаю значения State либо 1, либо 2, либо 3, либо 4, либо 5.

На основе значения iполучить, мне нужно посмотреть это перечисление и получить его строку.

Например: если входное значение равно 1, мне нужно вернуть KARNATAKA в виде строки.Аналогично, если входное значение равно 5, мне нужно вернуть GOA в виде строки.

Существует ли простой способ получить строку без использования CASE или IFELSE.

1 Ответ

0 голосов
/ 20 мая 2018

вы можете добавить теги Description к вашему перечислению, как показано ниже

public enum State
{
    [Description("Karnataka")]
    KARNATAKA = 1,
    [Description("Gujarat")]
    GUJRAT = 2,
    [Description("Assam")]
    ASSAM = 3,
    [Description("Maharashtra")]
    MAHARASHTRA = 4,
    [Description("Goa")]
    GOA = 5
}

, а затем получить назначенную строку описания из перечисления, как показано ниже

State stateVal = State.GOA;
string stateName = GetEnumDescription(stateVal);

, если у вас есть состояние, указанное в числе, как выупомянув комментарии, вы все равно можете легко привести его к типу enum.

int stateVal = 2;
string stateName = GetEnumDescription((State)stateVal);   

GetEnumDescription(), который возвращает строку для имени перечислений.

public static string GetEnumDescription(Enum enumVal)
{
    System.Reflection.MemberInfo[] memInfo = enumVal.GetType().GetMember(enumVal.ToString());
    DescriptionAttribute attribute = CustomAttributeExtensions.GetCustomAttribute<DescriptionAttribute>(memInfo[0]);
    return attribute.Description;
}

ПРИМЕЧАНИЕ

Поскольку операция над enum обходится дешевле, чем строковые операции, строковое значение enum должно быть ограничено только целью отображения, а для внутреннего использования вы должны использоватьсам enum в логике.

Способ получения строкового значения enum более предпочтителен.Как если бы вы использовали enum во многих местах в вашем коде, и вам нужно изменить отображаемый текст, вам придется изменять текст только в одном месте.

Например,

Предположимвы использовали это перечисление в своем проекте, а затем понимаете, что ваше написание гуджарата неверно, если вы изменяете текст перечисления самостоятельно, вам нужно изменить его через весь код (к счастью, визуальная студия делает это немного проще), пока вы используетеОписание в качестве метки для отображения, вам нужно только изменить это только.

Или

, когда вы пробел в имени (который вы должны отобразить).

EG.«Джамму и Кашмир» - это еще один штат Индии.

Вы можете иметь сокращение (здесь «JK») в имени enum и завершить строку с пробелом в описании.

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