как мне создать метод расширения для одного конкретного перечисления

#c# #enums #extension-methods

#c# #перечисления #методы расширения

Вопрос:

У меня есть класс enum, полный переключателей командной строки для стороннего приложения .. Я пытаюсь сделать так, чтобы я мог вызывать элемент в перечислении с помощью a .Для переключения (или чего угодно), чтобы я мог заставить его проверять тип значения, введите форматированный переключатель командной строки со значением его параметра. возможно, я ошибаюсь. После того, как я просидел здесь весь день, работая над этим (это большой) Мне трудно отпустить и изучить другой подход. lol есть предложения?

желаемый результат:

 Console.WriteLine(EnumClass.EnumItem.ToSwitch("option"));
  

выдал бы: -x «option»

Ответ №1:

Для конкретного перечисления:

 public enum MyEnum
{
    value1 = 1,
    value2 = 2,
}

public static class EnumExtensions
{
    public static string ToSwitch(this MyEnum val, string option)
    {
        switch (val)
        {
            case MyEnum.value1 : return "x "   option;
            case MyEnum.value2 : return "y "   option;
            default: return "error";
        }
    }
}
  

Другой способ сделать то, о чем вы говорите, — это использовать Dictionary , что может быть предпочтительнее. Ключами будет переключатель (или значение перечисления), а значением будет формат команды. Что-то вроде:

 Dictionary<string, string> CmdFormats = new Dictionary<string, string>()
{
    { "-a", "filename" },
    { "-n", "number" }
};
  

Я подозреваю, что это было бы более удобным в обслуживании, чем определение перечисления.