我的想法是,我想用函数调用的当前变量状态生成一个闭包,并订阅一个事件。引发事件后,然后删除闭包。这意味着它只是一次性订阅者,并且可以随时取消。
另外,我希望订阅者始终订阅该事件并且不会被删除,知道如何实现这一点吗?或者还有其他方法可以实现这一目标吗?谢谢!
public class A
{
public event Action process;
// publisher.
void OnEventRaise()
{
process?.Invoke();
}
}
public class B
{
// subscribe the closure and delete it once it is invoked, can unsubscribe at anytime.
void subscribe(A a)
{
string name = "one shot subscriber";
Action showName = () =>
{
print(name);
}
a.process += showName;
}
}
public class C
{
// this is always subscribed to the event.
void EventCallBack()
{
print("always subscribed");
}
void subscribe(A a)
{
a.process += EventCallBack;
}
}
汪汪一只猫
相关分类