Не удается получить метод расширения для типа Enum - PullRequest
0 голосов
/ 21 апреля 2019

У меня проблема с созданием метода расширения!

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 ]

3 голосов
/ 21 апреля 2019

Метод расширения работает не с типом напрямую, а со значением этого типа.

Так что-то вроде

TestEnum Val = TestEnum One;
 var b = Val.TestMethod();
1 голос
/ 21 апреля 2019

Если вам нужен список всех перечислений в List<string>, то вы можете попробовать что-то вроде

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

Будет возвращен список строк, содержащих

  //"One", "Two", "Three", "Four"

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...