我正在尝试创建一个可以应用于所有/任何枚举的扩展方法,它将枚举的字符串常量作为字符串列表返回。
这不起作用。
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'
答案 0 :(得分:3)
使用扩展方法时,需要一个可以调用该方法的实例。使用您的方法,您可以这样做:
var instance = new System.ConsoleModifiers();
Console.WriteLine(instance.ToList().Count());
如果您想了解有关C#不支持静态扩展方法的更多信息,可以在此处阅读:https://stackoverflow.com/a/4914207/573218