我尝试使用以下代码将枚举转换为通用列表
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类型作为参数传递。
答案 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));