2013-01-21 116 views
0

我有这样的方法,传递枚举作为参数

private List<SelectListItem> GetList() 
{ 
    var values = from LtlAccountType item in 
       Enum.GetValues(typeof(LtlAccountType)) 
       select new SelectListItem 
       { Text = item.ToString(), Value = item.ToString() }; 
    return values.ToList(); 
} 

如何通过enum作为parameter和查询enum

private List<SelectListItem> GetList(Enum obj) 
{ 
    var values = from obj item in Enum.GetValues(typeof(obj)) 
       select new SelectListItem 
       { Text = item.ToString(), Value = item.ToString() }; 
    return values.ToList(); 
} 

后返回列表我上obj

Type or namespace name expected此错误

+0

'typeof运算()'作品类型。当你有一个实例,调用例如'obj.GetType()',而不是 –

回答

1

你应该叫GetType(),而不是使用typeof()。您也不能使用Enum作为任何枚举的基类。最好的解决办法是使用struct ...

private List<SelectListItem> GetList<T>(T obj) where T : struct 
{ 
    var values = from Enum item in Enum.GetValues(obj.GetType()) 
       select new SelectListItem { Text = item.ToString(), Value = item.ToString() }; 
    return values.ToList(); 
} 
+0

我对'的GetType获取此错误()''如不能在静态context' – DON

+0

@DON访问非静态方法GetType对不起。现在没关系:) – 2kay

1

这是因为obj不是在.NET中有效的类型标识符。你为什么不去做一个简单的

List<SelectedListItem> result = new List<SelectedListItem>(); 
foreach (var item in Enum.GetValues(typeof(obj))) 
    result.Add(new SelectedListItem() { Text = item.ToString(), Value = item.ToStringt() } 

return result; 
1

我刚才想这和它的作品:

private static List<SelectListItem> GetList(Enum item) 
{ 
    var values = from Enum e in Enum.GetValues(item.GetType()) 
       select new SelectListItem { Text = e.ToString(), Value = e.ToString() }; 
    return values.ToList(); 
}