Справка по структуре модели данных
В настоящее время я работаю над приложением для станка с ЧПУ, которое я запускаю, и мне нужна некоторая помощь в том, как структурировать модели данных. Машина имеет башенку, представленную классом башенок, который имеет заданное количество станций, на которых инструментальные блоки могут быть "установлены" как в прямом, так и в обратном направлении. Каждый блок инструментов имеет заданное число положений блоков, на которые может быть установлен "инструмент", по одному на каждую позицию. В приложении мне нужен список размонтированных блоков инструментов и инструментов. Затем, когда я монтирую инструментальный блок на станцию, мне нужно, чтобы он стал недоступен в списке размонтированных инструментальных блоков. То же самое и с установкой инструмента в Блокпозицию.
Часть, которая ставит меня в тупик, заключается в том, что когда я монтирую инструмент в Блокпозицию, мне также нужно сохранить целое число, представляющее номер смещения, который будет использовать машина, и Блокпозицию для ссылки на монтируемый инструмент. Для меня не имеет смысла иметь свойство объекта "инструмент" в классе BlockPosition, когда оно мне нужно только в том случае, если это смонтированный блок инструментов.
При запуске приложения мне просто нужно перезагрузить какой инструментальный блок был на какой станции и инструмент был на какой Блокпозиции. Поэтому у меня есть вопрос, есть ли у кого-нибудь хороший способ структурировать эти модели.
Вот очень упрощенные классы, с которыми я работаю:
public class ToolBlock { public int ID { get; set; } public string Name { get; set; } public List<BlockPosition> Positions { get; set; } }
public class BlockPosition { public int ID { get; set; } public string Name { get; set; } public double Offset { get; set; } }
public class Station { public int ID { get; set; } public ToolBlock ToolBlock { get; set; } public BlockMountingPositionEnum BlockPosition { get; set; } }
public class Turret { public List<Station> Stations { get; set; } }
public class Tool { public int ID { get; set; } public double Offset { get; set; } public string Name{ get; set; } }
public enum BlockMountingPositionEnum { Foward = 0, Reverse = 1 }
Что я уже пробовал:
До сих пор я пытался наследовать от класса ToolBlock и BlockPosition, чтобы создать класс MountedToolBlock и MountedBlockPosition следующим образом:
public class MountedToolBlock : ToolBlock { public MountedBlockPositionEnum BlockPosition { get; set; } }
public class MountedBlockPosition : BlockPosition { public int OffsetNo { get; set; } public Tool Tool { get; set; } }Я просто не могу сделать это изящным способом, который имеет смысл. Я также попытался реализовать интерфейсы вместо конкретных классов для списка Блокпозиций. Я думал об использовании словаря< gt; Для хранения Блокпозиции с помощью OffsetNo и инструмента, но у меня ничего не получается. Я застрял на процессе фактического монтажа блоков инструментов и инструментов и структурирования этих данных, чтобы я мог сохранить их в xml.
Если это поможет, то в каждом блоке инструментов будет только до 4 Блокпозиций, так что, возможно, список-не самый лучший подход.
Надеюсь, я говорю разумно, любая помощь будет оценена по достоинству.