繁体   English   中英

当我只有枚举的类型时,如何获取枚举的整数值

[英]how to get the integer value of an enum, when i only have the type of the enum

我认为这个问题需要一些代码:

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时,我可以从字符串创建枚举值并将其转换为该枚举,然后将其转换为int,但在这种情况下,我没有枚举本身,但只有类型的枚举。

我尝试将实际枚举作为参数传递,但我不允许将枚举作为参数传递。

所以现在我被困了.....

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,并返回对其中一个枚举值的引用 - 然后可以简单地将其转换为int。

尝试

(int)Enum.Parse(enumType, v)
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值转换为枚举类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM