代表有明确的“this”指针?

时间:2010-06-10 22:52:23

标签: .net delegates

是否可以调整此功能“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中执行此操作的方法,或者是否将在未来版本中添加该功能。

1 个答案:

答案 0 :(得分:2)

最简单的方法可能是创建一个带有Cint的lambda,并在F上调用C,传递int

Action<C, int> test = (c, v) => c.F(v);

您还可以为实例方法C.F创建所谓的 open 委托,而不是通常类型的委托“关闭它的实例参数”。这可以使用反射和Delegate.CreateDelegate方法完成。虽然这会导致更“直接”的代表,但它很可能比你需要的更复杂。