在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 ExtensionsWPF Commanding

请注意,如果Publisher是长期的,但Subscriber应该是短暂的,则Subscriber将需要取消订阅该事件-否则,由于以下原因,Publisher将保留对Subscriber的引用:该事件,防止垃圾收集。

关于c# - 如何在C#或.NET中遵循发布者/订阅者策略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3682608/

10-16 11:46