我有这个方法,
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 :(得分:1)
<强>更新强>
Starting from C# 7.3您可以使用System.Enum
作为类型约束。
您应该致电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();
}
答案 1 :(得分: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;
答案 2 :(得分: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();
}