Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,一种扩展方法,用于从任何枚举返回命名常量的字符串列表_C#_Enums_Extension Methods - Fatal编程技术网

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

C#,一种扩展方法,用于从任何枚举返回命名常量的字符串列表,c#,enums,extension-methods,C#,Enums,Extension Methods,我正在尝试创建一个扩展方法,该方法可以应用于所有/任何枚举,它以字符串列表的形式返回枚举的字符串常量 这不起作用 static class EnumEx { public static List<string> ToList(this System.Enum e) { return System.Enum.GetNames (e.GetType()).ToList(); } } 更新: TestEnum instance = new Test

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

这不起作用

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

TestEnum instance = new TestEnum();
foreach(string e in instance.ToList())
        Console.Writeline(e);
并获取错误:

类型
string[]”不包含成员
ToList',并且最佳扩展方法重载
EnumEx.ToList(this System.Enum)”具有一些无效参数

扩展方法实例类型
string[]”无法转换为“System.Enum”

使用扩展方法时,需要一个实例来调用该方法。使用您的方法,您可以执行以下操作:

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

如果您想了解C#为什么不支持静态扩展方法的更多信息,可以在这里阅读:

什么不起作用?更具体地说,呵呵,我甚至不知道你可以“新建”一个
Enum
。很遗憾,您不能将自定义方法添加到
Enum
派生类型。这是我希望C#拥有的Java唯一的特性。哦,我明白了,扩展方法只能在实例上调用。但我仍然收到上面列出的错误。
var instance = new System.ConsoleModifiers();
Console.WriteLine(instance.ToList().Count());