C#,一种从任何枚举返回命名常量的字符串列表的扩展方法

时间:2014-07-28 01:30:42

标签: c# enums extension-methods

我正在尝试创建一个可以应用于所有/任何枚举的扩展方法,它将枚举的字符串常量作为字符串列表返回。

这不起作用。

static class EnumEx
{
    public static List<string> ToList(this System.Enum e)
    {
        return System.Enum.GetNames (e.GetType()).ToList();
    }
}

我称之为:

public enum TestEnum { HELLO, WORLD };

foreach(string e in TestEnum.ToList())
    Console.Writeline(e);

更新:

TestEnum instance = new TestEnum();
foreach(string e in instance.ToList())
        Console.Writeline(e);

并获取错误:

输入string[]' does not contain a member ToList'和最佳扩展方法重载EnumEx.ToList(this System.Enum)' has some invalid arguments Extension method instance type string []'无法转换为`System.Enum'

1 个答案:

答案 0 :(得分:3)

使用扩展方法时,需要一个可以调用该方法的实例。使用您的方法,您可以这样做:

var instance = new System.ConsoleModifiers();
Console.WriteLine(instance.ToList().Count());

如果您想了解有关C#不支持静态扩展方法的更多信息,可以在此处阅读:https://stackoverflow.com/a/4914207/573218