是否可以采用类似于函数“f”的方法?
class C { public void F(int i); }
给一个代表 Action<C,int> ?
Action<C,int>
我有一种模糊的回忆,微软正致力于支持这种适应。但也许我记错了!
编辑 :我知道这不会在VS2008中编译:
class C { public void F(int i); void G() { Action<C, int> test = this.F; } }
我只是想知道MS是否提供了一种在BCL中实现这一点的方法,或者该特性是否会在未来的版本中添加。
最简单的方法可能是创建一个lambda,它需要 C 和一个 int 和电话 F 上 C 通过 int :
C
int
F
Action<C, int> test = (c, v) => c.F(v);
您还可以创建一个 打开 委托给实例方法 C.F 与通常的委托类型相反,委托类型是“在其实例参数上关闭”。这可以通过反射和 Delegate.CreateDelegate 方法。虽然这将导致更直接的委托,但它很可能比您需要的更复杂。
C.F
Delegate.CreateDelegate