我怎么投通用枚举为int? [英] How do I cast generic enum to int?

查看:119
本文介绍了我怎么投通用枚举为int?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个看起来像这样的小方法:

I have a small method that looks like this:

    public void SetOptions<T>() where T : Enum
    {
        int i = 0;
        foreach (T obj in Enum.GetValues(typeof(T)))
        {
            if (i == 0)
                DefaultOption = new ListItem(obj.Description(), obj.ToString());
            i++;

            DropDownList.Items.Add(new ListItem(obj.Description(), obj.ToString()));
        }
    }



基本上,我填充由枚举的下拉列表。 说明()实际上是枚举一个扩展方法,让 T 绝对是一个枚举

Basically, I populate a dropdown list from an enum. Description() is actually an extension method for enums, so T is definitely an enum.

不过,我想投 OBJ 就像你任何枚举其指数这样的(INT)OBJ ,但我得到一个错误说我不能转换T可诠释。有没有办法做到这一点?

However, I want to cast obj just as you would any enum to its index like this (int)obj, but I get an error saying I can't convert T to int. Is there any way to do this?

推荐答案

试试这个,

public void SetOptions<T>()
{
    Type genericType = typeof(T);
    if (genericType.IsEnum)
    {
        foreach (T obj in Enum.GetValues(genericType))
        {
            Enum test = Enum.Parse(typeof(T), obj.ToString()) as Enum;
            int x = Convert.ToInt32(test); // x is the integer value of enum
                        ..........
                        ..........
        }
    }
}

这篇关于我怎么投通用枚举为int?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆