如何在C#中枚举枚举上的ToString()?

时间:2016-10-03 14:06:30

标签: c# enums override c#-5.0

我在项目中的所有类和名称空间之外声明了以下枚举:

public enum ServerType { Database, Web } // there are more but omitted for brevity

我想用以下内容覆盖ToString()方法:

public override string ToString(ServerType ServerType)
{
    switch (ServerType)
    {
        case ServerType.Database:
            return "Database server";
        case ServerType.Web:
            return "Web server";
    }
    // other ones, just use the base method
    return ServerType.ToString();
}

但是我收到错误no suitable method found to override

使用我自己的方法转换为字符串时是否可以覆盖枚举?

1 个答案:

答案 0 :(得分:0)

您可以定义静态类然后使用它。 当您创建此静态类并引用项目时,您可以在所有字符串变量中看到扩展的ToString()方法。这是扩展变量的简单方法。您可以将它用于其他选项;)

    public static class Extenders
    {
        public static string ToString(this string text, ServerType ServerType)
        {
            switch (ServerType)
            {
                case ServerType.Database:
                    return "Database server";
                case ServerType.Web:
                    return "Web server";
            }
            // other ones, just use the base method
            return ServerType.ToString();
        }
    }

像下面一样使用它;

 "Merhaba".ToString(ServerType.Database);