gpt4 book ai didi

C# 在运行时构建菜单、commandHandlers 和哈希表

转载 作者:行者123 更新时间:2023-11-30 22:28:48 25 4
gpt4 key购买 nike

我是 C# 的(非常)新手,我正在尝试用这种语言实现现有的应用程序元模型。在此元模型中,“菜单”表包含表单和操作的组合,指示对于每个表单,哪些操作应该可用。

然后我可以使用这个“菜单”数据源在运行时构建和显示表单的特定 MenuStrip。菜单中的每个项目 (ToolStripMenuItem) 都包含相应的“操作”字符串。单击此项应启动相应的命令。

那么现在的问题是:如何将 ToolStripmenuItem 的操作字符串链接到相应的命令?

我的第一个想法是维护一个包含作为键的操作字符串和要执行的方法的哈希表,如下所示:

一个通用的 CommandHandler 方法:

delegate void CommandHandler(string[] args);

并且,在我的主模块中,一个 HashTable 看起来像这样

myHashCommandTable.Add 
( "issueThePurchaseOrder",
new CommandHandler(PurchaseOrder.IssueThePurchaseOrder))

然后我可以在运行时运行相应的命令:

if myHashCommandTable.ContainsKey(myActionString)
{
((CommandHandler)myHashCommandTable[myActionString])
}

但这会迫使我“手动”维护这个 HashTable,它很快就会成为开发人员的麻烦源,并导致应用程序不稳定!还有其他想法吗?

最佳答案

我想您可以只将目标方法的名称存储在数据源中,然后使用反射在运行时查找它。将数据传递到目标方法会很棘手,但这只是您需要克服的另一个令人兴奋的挑战!

关于C# 在运行时构建菜单、commandHandlers 和哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com