我想传递一个方法并存储它。我们假设该方法采用一个int并返回void。我将它包装在Action< int>。
现在,是否有一种方法可以调用该方法,但不能调用它来自的对象,而是同一个类的不同实例?
有点难以比这更具体,但请问是否有任何令人困惑的事情,我会再试一次。
答案 0 :(得分:3)
编辑:好的,不理我的第一次尝试。我以为你在谈论一个不同的类。现在,是否有一种方法可以调用该方法,但不能调用它来自的对象,而是同一个类的不同实例?
听起来你应该将方法包装在Action<object, int>
(或更强类型的版本)中。
或者,您可以使用以下方式创建新委托:
Action<int> newAction = (Action<int>) Delegate.CreateDelegate(typeof(Action<int>),
newTarget,
oldAction.Method);
答案 1 :(得分:2)
您可以使用带参数类型的Type.GetMethod overload。这允许您使用指定的参数类型获得精确的方法。