c# eventbus中的事件如何定義

c#
小樊
83
2024-07-18 04:38:46

在C#中,可以使用委托和事件關(guān)鍵字來(lái)定義事件。首先需要定義一個(gè)委托類型,該委托類型定義了事件處理方法的簽名,然后使用event關(guān)鍵字聲明一個(gè)事件,將委托類型作為事件的類型。

例如,定義一個(gè)簡(jiǎn)單的事件:

public class EventBus
{
    // 定義委托類型
    public delegate void EventHandler(object sender, EventArgs e);

    // 聲明一個(gè)事件
    public event EventHandler MyEvent;

    // 觸發(fā)事件的方法
    public void RaiseEvent()
    {
        OnMyEvent(EventArgs.Empty);
    }

    protected virtual void OnMyEvent(EventArgs e)
    {
        MyEvent?.Invoke(this, e);
    }
}

在上面的例子中,定義了一個(gè)名為 EventBus 的類,其中聲明了一個(gè)名為 MyEvent 的事件,該事件的委托類型為 EventHandler。當(dāng)調(diào)用 RaiseEvent 方法時(shí),會(huì)觸發(fā) MyEvent 事件。

在使用時(shí),可以將事件處理方法與事件綁定:

EventBus eventBus = new EventBus();
eventBus.MyEvent += HandleEvent;

static void HandleEvent(object sender, EventArgs e)
{
    Console.WriteLine("Event handled");
}

通過(guò)這種方式,可以實(shí)現(xiàn)事件與事件處理方法之間的解耦,使代碼更加靈活和易于維護(hù)。

0