私は(非常に)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を「手作業で」維持することを余儀なくさせ、開発者にとってはすぐに問題の原因となり、アプリケーションにとっては不安定になる可能性があります。他のアイデアはありますか?