C#:将枚举类型作为参数传递

时间:2011-03-02 13:47:12

标签: c# enums c#-2.0

我尝试使用以下代码将枚举转换为通用列表

public static List<T> ToList<T>(Type t) where T : struct
{
    return Enum.GetValues(typeof(T)).Cast<T>().ToList();
}

它顺利完成了。

我尝试使用以下代码调用上述方法

 enum Fruit
    {
        apple = 1,
        orange = 2,
        banana = 3
    };

    private List<Fruit> GetFruitList()
    {
        List<Fruit> allFruits = EnumHelper.ToList(Fruit);
        return allFruits;
    }

导致以下错误

Compiler Error Message: CS0118: 'default.Fruit' is a 'type' but is used like a 'variable'

所以我确定如何将Enum类型作为参数传递。

6 个答案:

答案 0 :(得分:8)

public static List<T> ToList<T>() where T : struct
{
    return Enum.GetValues(typeof(T)).Cast<T>().ToList();
}

enum Fruit
{
    apple = 1,
    orange = 2,
    banana = 3
};

private List<Fruit> GetFruitList()
{
    List<Fruit> allFruits = EnumHelper.ToList<Fruit>();
    return allFruits;
}

答案 1 :(得分:4)

为什么不这样做:

public static List<T> ToList<T>()
{     
    return Enum.GetValues(typeof(T)).Cast<T>().ToList(); 
} 

答案 2 :(得分:2)

List<Fruit> allFruits = EnumHelper.ToList<Fruit>(typeof(Fruit));

答案 3 :(得分:1)

松开论坛Type t

该类型已作为泛型参数传递,因此您不需要该方法的常规参数。

答案 4 :(得分:1)

使用EnumHelper.ToList<Fruit>(typeof(Fruit));。但是,您可能会丢失参数,声明为EnumHelper.ToList<T>()并使用EnumHelper.ToList<Fruit>()

答案 5 :(得分:0)

为了将Type传递给您的函数,您应该使用以下语法:

 EnumHelper.ToList(typeof(Fruit));