我正在尝试创建一个类,其帧更新方法可以由委托定义;但是,我发现代表无法访问其类的成员。有没有办法做到这一点?有没有其他方法可以建议有这样的动态定义方法?
答案 0 :(得分:3)
您可以将父实例引用作为参数传递给委托,即
class Parent : IParent
{
readonly Func<IParent, IFrame> _render;
public IFrame Render()
{
return _render(this);
}
}
当然,除非渲染委托也是该类或其内部类的一部分,否则它只能访问公共成员。
请注意,最好使用接口作为参数类型,并选择委托所需的最小接口(并且不再公开),因为这样可以提供更大的可扩展性。
答案 1 :(得分:1)
创建一个可以作为委托参数传递的接口,然后使用要传递委托的类实现接口,并在调用委托时传递实例。