【问题标题】:enum tostring a different stringenum tostring 一个不同的字符串
【发布时间】:2014-11-12 12:56:16
【问题描述】:

那个问题没有回答我的问题,因为我需要调用toString,有没有可以添加的扩展方法?

我有一个枚举

public enum TimetableState
{
    ["Error Message"]
    errormessage = 0,
    Great = 1
}

我想接着打电话

TimetableState.errormessage.ToString();

并在属性“错误消息”中显示字符串, 或者,如果我调用 Great.ToString(),则返回字符串 'Great'。

属性可以是任何东西,它不必是描述。

我知道它可以直接与 ToString() 一起使用,但是如何?

+++++++ 这不是重复的,因为我想通过在枚举上调用 ToString() 来获得相同的结果,因为我需要一个列表排序和显示来使用它。 这可能吗? ++++++++

【问题讨论】:

  • 字符串描述关联TimetableState.errormessage或0;它永远不会显示“Great”,因为它是不同的值/成员 (1)
  • @TonyTheLion - 很多,我唯一看到的是下面的getdescription(答案1),但我们只想调用toString,因为我们希望它易于使用其他,作为 dll。
  • @Plutonix - 我已经编辑了原始问题以确认,谢谢。
  • @f1wade:你不需要大喊大叫。我没有回答你的问题,正确的。我已将其作为另一个副本关闭。在您看来,这个问题的独特之处是什么?顺便说一句,你不能像你所说的那样使用ToString来让它工作,因为它返回errormessage而不是"Error Message"。而GETDESCRIPTION 不是您可以使用的可用方法,而是您必须像副本中的那样实现的方法。
  • You can use a method 在没有描述时返回名称作为默认值(与欺骗中的相同)。我不知道如果不使用GetDescription,您还能如何获得描述 - 它是一个属性 - 元数据;也许你想要一个共享的字符串常量?

标签: c# .net vb.net


【解决方案1】:

更新: - 别管我的回答,这就是你要找的东西:How to get C# Enum description from value?

没找到解决办法,自己写了一个辅助函数:

    public static string GetDescription(Enum value)
    {
        string ret = value.ToString();
        FieldInfo fi = value.GetType().GetField(value.ToString());

        if (fi != null)
        {
            var att = fi.GetCustomAttribute<DescriptionAttribute>(true);

            if (att != null)
                ret = att.Description;
        }

        return ret;
    }

这是大约 3 年前的事了,如果有一个我错过的内置解决方案或者现在有一个,我很乐意使用它。

【讨论】:

  • “我没有找到解决方案” 这里是:stackoverflow.com/questions/2650080/…
  • 我的立场是正确的,当时已经有一个内置的解决方案,谢谢
  • 它不是内置的,它是 OP 编写的(或 unconstrained-melody 中的 Jon Skeet)。
  • 我想你可以使用它,然后覆盖 toString 并让它返回 GetDescription。?
  • 你不能在 C# 中覆盖 Enums 上的 tostring
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多