Enum.GetName() для битовых полей?

Похоже, Enum.GetName()не работает, если перечисление было украшено атрибутом [Flags].

Документацияне определяет ничего, связанного с этим ограничением.

Я заметил, что отладчик может отображать что-то вроде Дерево | Фрукты. Есть ли способ получить текстовую строку, описывающую комбинированные флаги?


Отображение следующего кода Красный.

public enum FavoriteColor
{
    Red,
    Blue,
    WeirdBrownish,
    YouDoNotEvenWantToKnow,
}

var color = FavoriteColor.Red;
Console.WriteLine(Enum.GetName(typeof(FavoriteColor), color));   // => "Red"

В то время как этот ничего не выводит....

[Flags]
public enum ACherryIsA
{
    Tree = 1,
    Fruit = 2,
    SorryWhatWasTheQuestionAgain = 4,
}

var twoOfThree = ACherryIsA.Fruit | ACherryIsA.Tree;
Console.WriteLine(Enum.GetName(typeof(ACherryIsA), twoOfThree));   // => ""

5
задан nulltoken 8 June 2012 в 12:38
поделиться