我们如何扩展所有枚举类型?

时间:2015-03-19 19:26:21

标签: c# generics enums extension-methods generic-programming

我们如何扩展所有枚举类型?

我想用一个名为“ToStringConstant”的新方法扩展所有枚举类型。此方法将整数值作为String返回。这是我到目前为止所做的,但是编译器不允许在where子句中使用枚举。

    public static string ToStringConstant<T>(this T EnumVar) where T : enum
    {
        return ((int)EnumVar).ToString();
    }

示例:

public enum Example
{
    Example = 0
}

void Method()
{
    Example var =  Example.Example;
    var.ToString();//Return "Example"
    var.ToStringConstant();//Return "0"   
}

1 个答案:

答案 0 :(得分:3)

不要让方法通用,只需接受Enum

public static string ToStringConstant(this Enum EnumVar)
{
    return ((int)EnumVar).ToString();
}

在旁注中,转换为long而不是int将确保代码无论枚举的基础类型如何都会起作用。