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());