Может кто-нибудь, пожалуйста, помогите мне понять внутреннюю логику метода HasFlag для класса enum? Позвольте мне сначала объяснить мое требование. Я уже создал enum с атрибутом флага, а затем использовал функцию HasFlag(), чтобы получить выбранную комбинацию из значения битового флага. Но здесь мои требования разные. У меня есть таблица в моей БД, в которой перечислены разные значения перечисления. структура выглядит следующим образом.Что такое внутренняя логика для реализации функции Enum HasFlag
EnumTypeID EnumVal EnumID Description
=========== ========== ========= ================
1 enum1 0 xxxxxxxxx
1 enum2 1 xxxxxxxxx
1 enum3 2 xxxxxxxxx
2 enum4 0 xxxxxxxxx
2 enum5 1 xxxxxxxxx
Скажем, у меня есть еще одна таблица, которая хранит комбинацию окончательного флага для EnumTypeID 1. Так что столбец таблицы предполагают, чтобы сохранить различные комбинации, как
0 = Nothing selected
1 = enum1 selected
2 = enum2 selected
3 = enum1 & enum2 selected
4 = enum3 selected
5 = enum1 & enum3 selected
6 = enum2 & enum3 selected
7 = enum1 & enum2 & enum3 selected
======= ================================================== ====
Теперь, как я могу программно (в C# .net4.5) достичь этого. Мне нужно сначала запросить первую таблицу и получить список перечислений для определенного EnumTypeID. Теперь мне нужно получить значение из второй таблицы для выбранного флага (скажем, значение равно 5). Тогда как я могу сказать, что в основном enum1 & enum3 выбран через код?
Я не знаю ни о ком другом, но я очень смущен вашим вопросом. У вас есть фактическое перечисление C# в любом месте? Если это так, это действительно помогло бы, если бы вы могли опубликовать это ... –
На самом деле я не хочу создавать Enum, но хочу использовать концепцию атрибута флага Enum. Мои перечисления будут поступать из DataBase. на основе значений этих enumIds мне нужно написать код, который будет динамически создавать 2 значения мощности. И тогда мне нужно сравнить это с значениями Flag из DB снова. –