Печать перечисления флагов как отдельных флагов

У меня есть перечисление флагов, определенное следующим образом:

[Flags]
public enum MyEnum
{
    None =     0x00,
    Choice1 =  0x01,
    Choice2 =  0x02,
    Choice3 =  0x04,
    Default =  Choice1 | Choice2,
    All =      Default | Choice3
}

Мне нужен способ распечатать, какие флаги включены в MyEnum.Default . В этом случае я бы хотел, чтобы на выходе было что-то вроде «Выбор1, Выбор2».

Проблема с простой печатью MyEnum.Default.ToString () заключается в том, что вывод будет «По умолчанию» когда я хочу «Выбор1, Выбор2».

Вот один вариант, но если бы я использовал его, мне пришлось бы обновлять печать каждый раз, когда я менял перечисление.

((StudyData.Choice1 & StudyData.Default) == StudyData.Choice1 ? StudyData.Choice1.ToString() : "") + ", " +
((StudyData.Choice2 & StudyData.Default) == StudyData.Choice2 ? StudyData.Choice2.ToString() : "") + ", " +
((StudyData.Choice3 & StudyData.Default) == StudyData.Choice3 ? StudyData.Choice3.ToString() : "")

Есть ли у кого-нибудь более чистый способ сделать это? В идеале мне нужен способ распечатать флаги, включенные в MyEnum. По умолчанию без необходимости изменять код печати каждый раз, когда я добавляю новый флаг или меняю значение по умолчанию.

Спасибо!

9
задан Brian 4 April 2011 в 18:55
поделиться