我有一个图表,我有一个带有节点的树视图,当选择它们时会显示各种图表。树视图节点名为xxxChart,在调用它的任何节点之后,调出各种图表的方法都被命名为xxxChart。
有些参数可以更改(例如开始/结束日期),当发生这种情况时,我需要再次运行当前图表的方法,使用更新的参数选择来刷新它。我认为最好有一个名为DisplayChart的Action对象,只要选择了一个节点就会设置它。然后当参数改变时我只需调用DisplayChart()。
现在,我欢迎您提出更好的模式来解决这个问题,但我的问题是:我如何使用反射来获取可以分配给Action对象的内容?我知道如何使用反射调用方法,但是当选择一个节点时,我只想在DisplayChart Action对象中存储名称与该节点匹配的方法。
当然,我知道我可以使用一个MethodInfo对象而不是一个Action对象,然后使用反射来调用该方法,但我仍然很好奇如何这样做。
答案 0 :(得分:3)
依赖于方法命名约定和反射不是很强大,但为了直接回答您的问题,您可以使用Delegate.CreateDelegate
.
E.g。
object boundObject = ...
MethodInfo method = ...
Action action = (Action)Delegate.CreateDelegate(typeof(Action),
boundObject,
method);