как получить целочисленное значение перечисления, когда у меня есть только тип перечисления - PullRequest
4 голосов
/ 15 июня 2011

Я думаю, что для этого вопроса нужен код:

private TypeValues GetEnumValues(Type enumType, string description)
        {
            TypeValues wtv = new TypeValues();
            wtv.TypeValueDescription = description;
            List<string> values = Enum.GetNames(enumType).ToList();
            foreach (string v in values)
            {
                //how to get the integer value of the enum value 'v' ?????
                wtv.TypeValues.Add(new TypeValue() { Code = v, Description = v });
            }
            return wtv;

        }

Назовите это так:

GetEnumValues(typeof(AanhefType), "some name");

В функции GetEnumValues у меня есть значения перечисления. Поэтому я повторяю значения и хочу также получить целочисленное значение этого значения перечисления.

Так что мои значения - «красный» и «зеленый», и я также хочу получить 0 и 1.

Когда у меня есть Enum в моей функции, я могу создать значение enum из строки и привести его к этому enum, а затем привести его к int, но в этом случае у меня нет самого enum, но только тип перечисления.

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

Так что теперь я застрял .....

Ответы [ 3 ]

5 голосов
/ 15 июня 2011

Попробуйте

(int)Enum.Parse(enumType, v)
5 голосов
/ 15 июня 2011
private TypeValues GetEnumValues(Type enumType, string description)
        {
            TypeValues wtv = new TypeValues();
            wtv.TypeValueDescription = description;
            List<string> values = Enum.GetNames(enumType).ToList();
            foreach (string v in values)
            {
                //how to get the integer value of the enum value 'v' ?????

               int value = (int)Enum.Parse(enumType, v);

                wtv.TypeValues.Add(new TypeValue() { Code = v, Description = v });
            }
            return wtv;

        }

http://msdn.microsoft.com/en-us/library/essfb559.aspx

Enum.Parse возьмет Type и String и вернет ссылку на одно из значений enum - которое затем можно просто привести к int.

0 голосов
/ 13 июня 2013
public static class StringEnum
{


    public static string GetStringValue(Enum value)
    {
        string output = null;
        Type type = value.GetType();

        FieldInfo fi = type.GetField(value.ToString());
        StringValue[] attr = fi.GetCustomAttributes(typeof(StringValue), false) as StringValue[];

        if (attr.Length > 0)
        {
            output = attr[0].Value;
        }
        return output;
    }
}

это метод для получения строкового значения.

public enum CampaignRequestType { [StringValue("None")] None = 0, [StringValue("Pharmacy Cards")] Pharmacy_Cards = 1,[StringValue("Prospect Campaign")] Prospect_Campaign = 2,[StringValue("Tradeshow/Advertising")] Tradeshow_Advertising = 3 }

это перечисление ...

string item = StringEnum.GetStringValue((Enumeration.CampaignRequestType)updateRequestStatus.RequestType_Code);

здесь (Enumeration.CampaignRequestType) мое перечисление updateRequestStatus.RequestType_Code - поле базы данных типа int

.

я приведу int значение к перечисление тип

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