У меня есть перечисление флагов, определенное следующим образом:
[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. По умолчанию
без необходимости изменять код печати каждый раз, когда я добавляю новый флаг или меняю значение по умолчанию.
Спасибо!