其他分享
首页 > 其他分享> > 计数和ToList扩展方法的枚举?

计数和ToList扩展方法的枚举?

作者:互联网

是否可以为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(); 
    } 
}

非常感谢 !

解决方法:

您可以使用e.GetType()代替typeof(???)

public static int Count(this Enum e) 
{ 
    return Enum.GetNames(e.GetType()).Length; 
} 

但是,我认为它无法按预期工作,因为您不能这样做:

var shouldBe7 = DayOfWeek.Count(); // does not compile

但是你可以做

var shouldBe7 = DayOfWeek.Monday.Count(); // 7

最好做一下:

public static class EnumHelper
{
    public static int Count(Type e)
    {
        // use reflection to check that e is an enum
        // or just wait for the Enum method to fail

        return Enum.GetNames(e).Length;
    }
}

然后用作

var shouldBe7 = EnumHelper.Count(typeof(DayOfWeek)); // 7

标签:enums,count,extension-methods,tolist,c
来源: https://codeday.me/bug/20191028/1955008.html