我正在尝试创建一个菜单系统,允许您在将最终选定的数据返回到调用方法时前后移动。
例如,orderFood()方法显示可以订购的食物类型选择菜单。如果有人选择海鲜,将运行海鲜()方法并查询可订购的海鲜类型然后显示它
如果用户选择鱼竿,鱼竿将返回到称为订单食物的方法。同样,此菜单系统将允许用户返回上一个菜单。
我在想(使用C#)我必须使用反射和不安全的代码(指针)来获得这种效果,但我很肯定有一种更简单的方法可以做到这一点。有什么建议吗?
谢谢, 迈克尔
答案 0 :(得分:1)
不要将菜单视为堆栈,而是尝试将它们视为树。
如果你这样做,那么在你需要实现堆栈方法时,在树上“走动”应该相当容易。
这很容易从文件或数据库中读取(特别是非常容易从XML中读取),也不应该太难以上下走动。
这里没有任何东西需要不安全的代码或反射 - 它可以用C#中的标准集合完成。
答案 1 :(得分:0)
如果您在编译时知道,通过使数据驱动,您可以轻松地执行您所描述的内容而不会出现不安全的代码。不要将菜单视为执行这些操作的例程,而应将菜单视为执行这些操作的一类对象。 Ommm。
即使您在编译时不知道所有内容(比如说您需要从文件中读取选项),您仍然可以通过在运行时构建代表菜单的对象嵌套来实现,基于文件。