【问题标题】:How to override ToString() on enum in C#? [duplicate]如何在 C# 中覆盖枚举上的 ToString()? [复制]
【发布时间】:2017-02-11 12:22:02
【问题描述】:

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

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

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

【问题讨论】:

标签: c# enums overriding c#-5.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多