C#委托事件怎樣實(shí)現(xiàn)解耦

c#
小樊
81
2024-10-25 05:12:53
欄目: 編程語言

在C#中,委托和事件是實(shí)現(xiàn)解耦的一種常用方法。通過使用委托和事件,你可以將事件的發(fā)送者和接收者分離,從而使它們之間的耦合度降低。下面是一個(gè)簡單的示例,展示了如何使用委托和事件實(shí)現(xiàn)解耦:

  1. 首先,定義一個(gè)委托:
public delegate void MyEventHandler(object sender, EventArgs e);
  1. 創(chuàng)建一個(gè)包含事件的類:
public class EventPublisher
{
    // 定義事件
    public event MyEventHandler MyEvent;

    // 觸發(fā)事件的方法
    public void RaiseMyEvent()
    {
        MyEvent?.Invoke(this, EventArgs.Empty);
    }
}
  1. 創(chuàng)建一個(gè)訂閱事件的類:
public class EventSubscriber
{
    public EventSubscriber(EventPublisher publisher)
    {
        // 訂閱事件
        publisher.MyEvent += OnMyEvent;
    }

    // 處理事件的方法
    private void OnMyEvent(object sender, EventArgs e)
    {
        Console.WriteLine("Event received!");
    }
}
  1. 在主程序中使用這兩個(gè)類:
class Program
{
    static void Main(string[] args)
    {
        EventPublisher publisher = new EventPublisher();
        EventSubscriber subscriber = new EventSubscriber(publisher);

        // 觸發(fā)事件
        publisher.RaiseMyEvent();
    }
}

在這個(gè)示例中,EventPublisher 類負(fù)責(zé)觸發(fā)事件,而 EventSubscriber 類負(fù)責(zé)處理事件。通過將事件的發(fā)送者和接收者分離,我們可以輕松地更改事件的接收者,而不需要修改發(fā)送者的代碼。這就實(shí)現(xiàn)了解耦。

0