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

Mar*_*son 5 c# enums overriding 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();
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ahm*_*mış 5

您可以定义一个静态类然后使用它。当您创建这个静态类并引用您的项目时,您可以在所有字符串变量中看到扩展的 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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

像下面一样使用它;

 "Merhaba".ToString(ServerType.Database);
Run Code Online (Sandbox Code Playgroud)