我是 C# 的(非常)新手,我正在尝试用这种语言实现现有的应用程序元模型。在这个元模型中,“菜单”表包含表单和操作的组合,为每个表单指示哪些操作应该可用。
然后我可以使用这个“菜单”数据源在运行时构建和显示表单的特定 MenuStrip。菜单 (ToolStripMenuItem) 中的每个项目都包含相应的“操作”字符串。单击此项目应启动相应的命令。
那么现在的问题是:如何将 ToolStripmenuItem 的操作字符串链接到相应的命令?
我的第一个想法是维护一个包含操作字符串作为键的 HashTable,以及要执行的方法,如下所示:
一个通用的 CommandHandler 方法:
delegate void CommandHandler(string[] args);
并且,在我的主模块中,一个看起来像这样的 HashTable
myHashCommandTable.Add
( "issueThePurchaseOrder",
new CommandHandler(PurchaseOrder.IssueThePurchaseOrder))
然后我可以在运行时运行相应的命令:
if myHashCommandTable.ContainsKey(myActionString)
{
((CommandHandler)myHashCommandTable[myActionString])
}
但这将迫使我“手动”维护这个 HashTable,它很快就会成为开发人员的麻烦源,以及应用程序的不稳定!还有什么想法吗?