在C#中访问委托中的类成员

时间:2013-12-11 08:11:55

标签: c# delegates

我正在尝试创建一个类,其帧更新方法可以由委托定义;但是,我发现代表无法访问其类的成员。有没有办法做到这一点?有没有其他方法可以建议有这样的动态定义方法?

2 个答案:

答案 0 :(得分:3)

您可以将父实例引用作为参数传递给委托,即

class Parent : IParent
{
    readonly Func<IParent, IFrame> _render;
    public IFrame Render()
    {
         return _render(this);
    }
}

当然,除非渲染委托也是该类或其内部类的一部分,否则它只能访问公共成员。

请注意,最好使用接口作为参数类型,并选择委托所需的最小接口(并且不再公开),因为这样可以提供更大的可扩展性。

答案 1 :(得分:1)

创建一个可以作为委托参数传递的接口,然后使用要传递委托的类实现接口,并在调用委托时传递实例。