2

グラフがあり、ノードを選択するとさまざまなグラフが表示されるツリー ビューがあります。ツリー ビュー ノードには xxxChart という名前が付けられ、さまざまなチャートを表示するメソッドには、それを呼び出すノードにちなんで xxxChart という名前が付けられます。

変更可能なパラメーター (開始日/終了日など) があり、その場合、現在のチャートのメソッドを再度実行して、更新されたパラメーターの選択で更新する必要があります。ノードが選択されるたびに設定される DisplayChart という Action オブジェクトを用意することをお勧めします。次に、パラメーターが変更されたら、DisplayChart() を呼び出します。

さて、この問題を解決するためのより良いパターンのアイデアを歓迎しますが、私の質問は次のとおりです: リフレクションを使用して、Action オブジェクトに割り当てることができるものを取得するにはどうすればよいですか? リフレクションを使用してメソッドを呼び出す方法は知っていますが、ノードが選択されたときに、そのノードに一致する名前のメソッドを DisplayChart Action オブジェクトに格納したいだけです。

もちろん、Action オブジェクトの代わりに MethodInfo オブジェクトを使用してから、リフレクションを使用してメソッドを呼び出すことができることはわかっていますが、この方法でそれを行う方法にまだ興味があります。

4

1 に答える 1

3

メソッドの命名規則とリフレクションに依存することはあまり堅牢ではありませんが、質問に直接答えるには、のオーバーロードの 1 つを使用できますDelegate.CreateDelegate

例えば

object boundObject = ...
MethodInfo method = ...

Action action = (Action)Delegate.CreateDelegate(typeof(Action), 
                                                boundObject, 
                                                method);
于 2012-05-25T04:41:51.597 に答える