如何为单个特定枚举创建扩展方法

时间:2011-04-29 23:35:14

标签: c# enums extension-methods

我有一个enum类充满了第三方应用程序的命令行开关。我正在尝试这样做,所以我可以使用.ToSwitch(或其他)调用枚举中的项目,以便我可以使其验证值类型,使用其参数值吐出格式化的命令行开关。也许我错了。整天坐在这里工作(很大)我发现很难放手去探索不同的方法。大声笑?

期望的结果:

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

会吐出:-x“选项”

1 个答案:

答案 0 :(得分:2)

对于特定的枚举:

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

我怀疑这比定义枚举更容易维护。