c# - Enum 的 Count 和 ToList 扩展方法?

标签 c# linq enums count extension-methods

是否可以为 Enum 实例取消创建 Count 和 ToList 扩展方法? 我已经试过了,但不知道如何替换与枚举“e”的类型相关的“???”。

public static class EnumExtensions 
{ 
    public static int Count(this Enum e) 
    { 
        return Enum.GetNames(typeof(???)).Length; 
    } 

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

非常感谢!

最佳答案

为什么需要新的扩展方法?您可以使用可用的:

string[] dayNames = Enum.GetNames(typeof(DayOfWeek));
int count = dayNames.Count();
List<string> list = dayNames.ToList(); 

如果你想要枚举类型的列表:

List<DayOfWeek> list = Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().ToList();

扩展是没有意义的,因为只有当你有一个实例而不是一个类型时你才能扩展。但是你可以像这样使用工厂方法:https://stackoverflow.com/a/2422169/284240

关于c# - Enum 的 Count 和 ToList 扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27918762/

相关文章:

Java + Spring - 如何验证枚举

c# - WPF DataGrid 在渲染期间缓慢加载

c# - DbContext 与 Ninject ADO.NET

c# - 如何从文本中删除 url

c# - 在 Linq 中求和 2 列

linq - 拦截所有 EF6 Linq 查询

c# - 创建复合关键 Entity Framework

c# - 默认后不能出现linq过滤器?

c++ - 涉及旧式枚举和整数类型的重载解析

swift - 无法分配给属性 : <Enum:case> is not settable