在C#中或.NET的BCL中的类或函数中,最适合遵循publisher/subscriber(aka。signals/slots)策略的语言构造是什么?
最佳答案
C#和VB中的事件是用于处理pub / sub的典型语言结构:
public class Publisher
{
public event EventHandler MyEvent;
private void RaiseEvent()
{
EventHandler handler = MyEvent;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
}
public class Subscriber
{
public void Subscribe(Publisher pub)
{
pub.MyEvent += MethodToCall;
}
private void MethodToCall(object sender, EventArgs e)
{
// This will be called from Publisher.RaiseEvent
}
}
备选方案包括Reactive Extensions和WPF Commanding。
请注意,如果
Publisher
是长期的,但Subscriber
应该是短暂的,则Subscriber
将需要取消订阅该事件-否则,由于以下原因,Publisher
将保留对Subscriber
的引用:该事件,防止垃圾收集。关于c# - 如何在C#或.NET中遵循发布者/订阅者策略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3682608/