Создание стека меню - PullRequest
       9

Создание стека меню

1 голос
/ 21 марта 2009

Я пытаюсь создать систему меню, которая позволяет вам идти вперед и назад, возвращая окончательно выбранные данные вызывающему методу.

Например, метод orderFood () отображает меню выбора типов блюд, которые можно заказать. Если кто-то выбирает морепродукты, то запускается метод морепродуктов () и запрашивается, какие виды морепродуктов можно заказать, а затем отобразите его

если пользователь выбирает рыбные палочки, рыбные палочки будут возвращены методу, который называется заказывать еду. Аналогично, эта система меню позволит пользователю вернуться к предыдущему меню.

Я думаю (используя C #), чтобы получить такой эффект, мне пришлось бы использовать рефлексию и небезопасный код (указатели), но я уверен, что есть более простой способ сделать это. Есть предложения?

Спасибо, Michael

Ответы [ 2 ]

1 голос
/ 21 марта 2009

Вместо того, чтобы думать о меню как о стеке, попробуйте думать о них как о дереве.

Если вы сделаете это, должно быть довольно легко "ходить" вверх и вниз по дереву, поскольку вам необходимо реализовать свой стековый подход.

Это было бы довольно легко прочитать из файла или базы данных (в частности, очень легко из XML), а также не должно быть слишком жестким, чтобы ходить вверх и вниз.

На самом деле в этом нет ничего, что требовало бы небезопасного кода или отражения - все это можно сделать с помощью стандартных коллекций в C #.

0 голосов
/ 21 марта 2009

Вы можете легко сделать то, что вы описываете, без небезопасного кода, если вы знаете его во время компиляции, сделав его управляемым данными. Вместо того, чтобы думать о меню как о рутине, которая делает эти вещи, думайте о меню как о классе объектов, которые делают эти вещи. Ommm.

Даже если вы не знаете всего во время компиляции (скажем, вам нужно прочитать параметры из файла), вы все равно можете сделать это, создав гнездо объектов, представляющих ваши меню во время выполнения, на основе содержимого файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...