2

我有一个图表,我有一个树视图,节点选择了各种图表。树视图节点命名为 xxxChart,显示各种图表的方法在调用它的任何节点之后命名为 xxxChart。

有可以更改的参数(例如开始/结束日期),当发生这种情况时,我需要再次运行当前图表的方法以使用更新的参数选择刷新它。我认为拥有一个名为 DisplayChart 的 Action 对象是个好主意,只要选择了一个节点,就会设置该对象。然后当参数改变时,我只需调用 DisplayChart()。

现在,我欢迎您对更好的模式来解决这个问题的任何想法,但我的问题是:如何使用反射来获得可以分配给 Action 对象的东西?I know how to invoke a method using reflection, but when a node is selected I just want to store the method with the name matching that node in the DisplayChart Action object.

当然,我知道我可以只使用 MethodInfo 对象而不是 Action 对象,然后使用反射来调用该方法,但我仍然很好奇如何做到这一点。

4

1 回答 1

3

依赖方法命名约定和反射不是很健壮,但要直接回答您的问题,您可以使用Delegate.CreateDelegate.

例如

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

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