有没有办法将此枚举转换为正确的类型

时间:2013-07-18 18:17:29

标签: c# enums

我有一个用户控件,它实际上是一个包装器下拉列表。

我设置了这样的类型:

public Type ListType { get; set; }

然后尝试根据此类型创建下拉列表项。

这是我的第一次尝试:

    void SetOptions()
    {
        DropDownList.Items.Clear();

        var options = Enum.GetNames(ListType).ToList();

        options.ThrowNullOrEmpty("options");

        foreach (var s in options)
        {
            var e = Enum.Parse(ListType, s) as Enum;

            var item = new ListItem(e.Description(), s);

            DropDownList.Items.Add(item);
        }
    }

但是,我想知道是否可以这样做:

    void SetOptions()
    {
        DropDownList.Items.Clear();

        var options = Enum.GetValues(ListType); // need to cast this to type of ListType

        foreach (var o in options)
        {
            var item = new ListItem(o.Description(), o.ToString());

            DropDownList.Items.Add(item);
        }
    }

我无法弄清楚如何将值列表转换为正确的枚举类型。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你可以这样做:

void SetOptions()
{
    DropDownList.Items.Clear();

    var options = Enum.GetValues(ListType); // need to cast this to type of ListType

    foreach (var o in options)
    {
        var item = new ListItem(o.Description(), o.ToString());
        item.Tag = o;

        DropDownList.Items.Add(item);
    }
}

然后,您可以从Tag属性中获取所选列表项的类型。