C# 如何使用反射获取方法并分配给动作对象?

C# 如何使用反射获取方法并分配给动作对象?,c#,reflection,C#,Reflection,我有一个图表,我有一个带有节点的树状视图,当被选中时会显示各种图表。树视图节点被命名为xxxChart,在调用它的节点之后,显示各种图表的方法被命名为xxxChart 有些参数是可以更改的(例如开始/结束日期),当发生这种情况时,我需要再次运行当前图表的方法,以使用更新的参数选择刷新它。我认为最好有一个名为DisplayChart的操作对象,它将在选择节点时设置。然后,当一个参数被更改时,我只调用DisplayChart() 现在,我欢迎您提出任何更好的模式来解决这个问题的想法,但我的问题是:如

我有一个图表,我有一个带有节点的树状视图,当被选中时会显示各种图表。树视图节点被命名为xxxChart,在调用它的节点之后,显示各种图表的方法被命名为xxxChart

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

现在,我欢迎您提出任何更好的模式来解决这个问题的想法,但我的问题是:如何使用反射来获得可以分配给动作对象的东西?我知道如何使用反射调用方法,但当选择一个节点时,我只想将名称与该节点匹配的方法存储在DisplayChart操作对象中


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

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

例如


您是使用robust来表示性能,还是指它在软件方面的实际意义?如果性能良好,那么您应该查看Fasterflect,它比通常的反射方式快50倍。但是如果你是在暗示它会导致bug软件,那么我会说这取决于谁在编写代码:)旁注:我实际上在数据层中大量使用反射,根据属性的名称(或属性中指定的别名,如果提供的话)将数据从db移动到业务对象中。一开始我对它的表现非常失望,这促使我研究是否可以更快地进行反射,然后我找到了Fasterflect。现在,它的执行速度(包括填充对象)实际上与直接从SQLServerManagementStudio执行查询一样快。
object boundObject = ...
MethodInfo method = ...

Action action = (Action)Delegate.CreateDelegate(typeof(Action), 
                                                boundObject, 
                                                method);