是否可以调整此功能“F”的方法
class C {
public void F(int i);
}
代表Action<C,int>
我有这种模糊的回忆,微软正致力于支持这种改编。但也许我记错了!
编辑:我知道这不能在VS2008中编译:
class C {
public void F(int i);
void G() {
Action<C, int> test = this.F;
}
}
我只是想知道MS是否提供了在BCL中执行此操作的方法,或者是否将在未来版本中添加该功能。
答案 0 :(得分:2)
最简单的方法可能是创建一个带有C
和int
的lambda,并在F
上调用C
,传递int
:
Action<C, int> test = (c, v) => c.F(v);
您还可以为实例方法C.F
创建所谓的 open 委托,而不是通常类型的委托“关闭它的实例参数”。这可以使用反射和Delegate.CreateDelegate
方法完成。虽然这会导致更“直接”的代表,但它很可能比你需要的更复杂。