传递方法的签名并在同一类型的另一个对象上调用它

时间:2012-09-06 09:20:24

标签: c# methods delegates

我想传递一个方法并存储它。我们假设该方法采用一个int并返回void。我将它包装在Action< int>。

现在,是否有一种方法可以调用该方法,但不能调用它来自的对象,而是同一个类的不同实例?

有点难以比这更具体,但请问是否有任何令人困惑的事情,我会再试一次。

2 个答案:

答案 0 :(得分:3)

  

现在,是否有一种方法可以调用该方法,但不能调用它来自的对象,而是同一个类的不同实例?

编辑:好的,不理我的第一次尝试。我以为你在谈论一个不同的

听起来你应该将方法包装在Action<object, int>(或更强类型的版本)中。

或者,您可以使用以下方式创建新委托:

Action<int> newAction = (Action<int>) Delegate.CreateDelegate(typeof(Action<int>),
                                          newTarget,
                                          oldAction.Method);

答案 1 :(得分:2)

您可以使用带参数类型的Type.GetMethod overload。这允许您使用指定的参数类型获得精确的方法。