У меня возникла проблема при попытке создать общее хранилище ..
В основном у меня есть следующие 4 объекта
Поддон
коробка
Посылка
Пункт
Верхние 3 - это все контейнеры, которые могут содержать в иерархии все, что ниже, чем он сам.
Первоначально было принято, чтобы на поддонах были коробки, в коробках - посылки, в посылках - предметы.
Но теперь я хочу, чтобы некоторые «средние» контейнеры можно было пропустить:
Например, поддоны содержат посылки, которые содержат предметы (без коробок)
EG2, Поддоны содержат предметы (без коробок или предметов).
На данный момент у меня есть таблица базы данных для каждого из этих объектов.
Но становится все более грязным, чтобы придумать способ отслеживать все.
В коде у меня возникают другие проблемы, например, для печати содержимого поддона, изначально было бы:
class Pallet : List<Box> {}
class Box : List<Parcel> {}
class Parcel : List<Item> {}
class Item {}
class Pallet : List<Box>
{
void Print()
{
foreach (Box b in this)
foreach (Parcel p in b)
foreach (Item i in p)
//Print
}
}
Но теперь, так как я не знаю, что будет внутри, я не знаю, как это сделать.
Я надеюсь, что кто-нибудь может дать мне совет по проектированию хорошей структуры данных или метода хранения всего хорошего и эффективного способа.
Я мог бы сделать что-то вроде:
class Pallet : List<T>
{
void Print()
{
if (this[0] is Box)
//do this
if (this[0] is Parcel)
//do this, etc
}
}
Но это кажется ужасно грязным.
Надеюсь, вы увидите, что я пытаюсь сделать.