Как создать метод расширения для одного конкретного перечисления - PullRequest
0 голосов
/ 30 апреля 2011

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

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

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

выплюнет: -x "option"

1 Ответ

2 голосов
/ 30 апреля 2011

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

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" }
};

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

...