9

列挙型の完全な文字列を取得するソリューションを探しています。

例:

Public Enum Color
{
    Red = 1,
    Blue = 2
}
Color color = Color.Red;

// This will always get "Red" but I need "Color.Red"
string colorString = color.ToString();

// I know that this is what I need:
colorString = Color.Red.ToString();

それで、解決策はありますか?

4

6 に答える 6

12
public static class Extensions
{
    public static string GetFullName(this Enum myEnum)
    {
      return string.Format("{0}.{1}", myEnum.GetType().Name, myEnum.ToString());
    }
}

利用方法:

Color color = Color.Red;
string fullName = color.GetFullName();

GetType().Name注:そのほうがいいと思いますGetType().FullName

于 2013-09-19T09:31:49.743 に答える
1

すべての列挙型で機能する高速バリアント

public static class EnumUtil<TEnum> where TEnum : struct
{
    public static readonly Dictionary<TEnum, string> _cache;

    static EnumUtil()
    {
        _cache = Enum
            .GetValues(typeof(TEnum))
            .Cast<TEnum>()
            .ToDictionary(x => x, x => string.Format("{0}.{1}", typeof(TEnum).Name, x));
    }

    public static string AsString(TEnum value)
    {
        return _cache[value];
    }
}
于 2013-09-19T09:35:35.937 に答える
0

これが最善の方法かどうかはわかりませんが、うまくいきます:

string colorString = string.Format("{0}.{1}", color.GetType().FullName, color.ToString())
于 2013-09-19T09:25:53.877 に答える