У меня есть некоторые предметы в базе данных. Каждый из них может иметь много тегов, таких как Browsable, IsInMenu и так далее. Мой друг предложил использовать перечисления с атрибутом Flags для создания расширяемого решения. Итак, я создал поле в БД, которое принимает целочисленное значение, затем я создал это перечисление:
[Flags]
public enum ItemTags { Browsable = 2, IsInMenu = 4}
Теперь я хотел бы иметь возможность семантически получить список некоторых элементов следующим образом:
public List<Item> GetItems(ItemTags tags)
{
/*
Code to get data from DB, something like,
return repository.GetList(tags);
*/
}
и в интерфейсе я хотел бы позвонить:
List<Item> items = GetItems(ItemTags.Browsable | ItemTags.IsInMneu);
Но я не получаю желаемого результата. Я иду правильным путем?
Под желаемым результатом я имею в виду это:
Значения, хранящиеся в базе данных, теперь могут быть одним из 0, 2, 4, 6 значений. 0 означает, что элемент не находится в Меню и не доступен для просмотра. 2 Означает, что элемент доступен для просмотра, но не в меню. 4 означает, что элемент находится в меню, но не доступен для просмотра. 6 означает, что элемент доступен для просмотра и IsInMenu. Теперь, когда я вызываю функцию GetItems
, я не получаю все элементы, которые доступны для просмотра, в меню или одновременно доступны для просмотра и в меню.