GUIとDI

以前の日記「語彙の乱立 - Kazzzの日記」で言及しましたが拙作のGUIフレームワークではGUIの依存性の注入を可能とすべく実装を行っており、以下のような設定ファイル(又はなんらかの方法で指定されたカスタム属性)により設定ファイルに書かれたFormのGUIをDIすることを可能にする予定です。(最近忙しくて進んでいないのですが..)


 "642, 661"
 "361, 282"
 root


 file


 "file"
 "Ctrl+F"
 "ファイル(&F)"

一見して解る通りこれはWindowsFormsにおけるForm、MenuとMenuItemを構成するための設定をDI用に記述したものでありこれにより実行時にメニューの構成を行うことを可能とするものです。当時はこれで充分と思っていたのですがメニューのGUIが持つイベントに特定のハンドラを注入するのもありなのかな、と思い始めています。こんな感じになるのかな。


 "file"
 "Ctrl+F"
 "ファイル(&F)"
 close


"close"
 "閉じる(&C)"
 OnClick ← ここは公開されているイベントなのでevent要素として指定

OnClickの記述

問題はOnClickイベントハンドラの記述ですが例えば予めイベントのデリゲートに対応したコードを用意しておくのを前提にして

FooForm.Close_Click

と他のクラスのメソッドとして指定するか、又は完全なプレースホルダとして指定できるようにして



とCDATAセクションで直接式等を書けるようにしておいてCodeDomでイベントハンドラの雛形を作って、いやいやこれはやりすぎかな、とかS2.NET同様にJScriptCodeProviderでEvalするか、等いろいろ妄想が膨らむのです。GUI、Delegate、DI、AOP、この辺のキーワードの組み合わせで.NETはもっと面白い事でできそうなんですけど今ひとつ考えが一つにまとまらないです。
※Avalonが出たら一つの方法に収束するような気もするんですけどさすがに.NET2.0はターゲットにできてもLonghornはターゲットにできないなぁ。