是否可以为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