C# 将枚举作为参数传递

C# 将枚举作为参数传递,c#,.net,asp.net-mvc-4,C#,.net,Asp.net Mvc 4,我有这个方法, private List<SelectListItem> GetList() { var values = from LtlAccountType item in Enum.GetValues(typeof(LtlAccountType)) select new SelectListItem { Text = item.ToString(), Value

我有这个方法,

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();
}
我在
obj


需要类型或命名空间名称

更新:

您可以使用
System.Enum
作为类型约束


您应该调用
GetType()
,而不是使用
typeof()
。此外,不能将
Enum
用作任何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();
}
private List GetList(T obj),其中T:struct
{
var values=来自Enum.GetValues(obj.GetType())中的枚举项
选择新SelectListItem{Text=item.ToString(),Value=item.ToString()};
返回值。ToList();
}

更新:

您可以使用
System.Enum
作为类型约束


您应该调用
GetType()
,而不是使用
typeof()
。此外,不能将
Enum
用作任何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();
}
private List GetList(T obj),其中T:struct
{
var values=来自Enum.GetValues(obj.GetType())中的枚举项
选择新SelectListItem{Text=item.ToString(),Value=item.ToString()};
返回值。ToList();
}

这是因为
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;
列表结果=新列表();
foreach(Enum.GetValues中的变量项(typeof(obj)))
结果.Add(新建SelectedListItem(){Text=item.ToString(),Value=item.ToString()}
返回结果;

这是因为
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;
列表结果=新列表();
foreach(Enum.GetValues中的变量项(typeof(obj)))
结果.Add(新建SelectedListItem(){Text=item.ToString(),Value=item.ToString()}
返回结果;

我刚刚尝试了这个方法,效果很好:

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();
}
私有静态列表GetList(枚举项)
{
var values=来自Enum.GetValues(item.GetType())中的枚举e
选择新的SelectListItem{Text=e.ToString(),Value=e.ToString()};
返回值。ToList();
}

我刚刚尝试了这个方法,效果很好:

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();
}
私有静态列表GetList(枚举项)
{
var values=来自Enum.GetValues(item.GetType())中的枚举e
选择新的SelectListItem{Text=e.ToString(),Value=e.ToString()};
返回值。ToList();
}

typeof()
适用于类型。当您有一个实例时,调用例如
obj.GetType()
而不是
typeof()
适用于类型。当您有一个实例时,调用例如
obj.GetType()
GetType()上我收到这个错误
as
无法访问静态上下文中的非静态方法GetType
@DON抱歉。现在可以:)我在
GetType()上遇到此错误。
as
无法访问静态上下文中的非静态方法GetType
@DON抱歉。现在可以:)