无法获取类型为Enum的扩展方法

时间:2019-04-21 11:56:22

标签: c# enums

我遇到的问题是创建扩展方法!

public enum TestEnum
{
    One, Two, Three, Four
}

public static class EnumExtension
{
   public static bool TestMethod(this TestEnum e)
   {
       return false;
   }
}

[TestMethod]
public void TestAll()
{
    var result = TestEnum. ;   //this only gives the values of the enum (One, Two, Three, Four), there is no option to call the extension method
}

我希望上面代码中的注释确实显示了问题-我假设我在做一个很大的假设,并且弄错了。

但是,我宁愿通过允许任何枚举调用此功能来使其更加实用。最终目标可能是

public static IEnumerable<string> ConvertToList(this Enum e)
{
     var result = new List<string>();
     foreach (string name in Enum.GetNames(typeof(e)))    //doesn't like e
     {
         result.Add(name.ToString());
     }
     return result;
}

2 个答案:

答案 0 :(得分:3)

扩展方法不能直接作用于类型,而是作用于该类型的值。

类似

TestEnum Val = TestEnum One;
 var b = Val.TestMethod();

答案 1 :(得分:1)

如果您需要List<string>中所有枚举的列表,则可以尝试类似

List<string> enumList = Enum.GetNames(typeof(TestEnum)).ToList();

这将返回包含

的字符串的列表
  //"One", "Two", "Three", "Four"

enter image description here