簡體   English   中英

從程序集訂閱方法到我的應用程序中的事件

[英]Subscribe method from assembly to an event in my application

假設我有一個事件,聲明如下:

public class OnGooseHonkEvent{
    public delegate void OnGooseHonk();

    public static event OnGooseHonk OnGooseHonkEvent;
}

然后在編譯為 dll 的程序集中,我有以下代碼:

namespace ExampleMod
{
    public class Class1
    {
        public Class1()
        {

        }
        public void OnGooseHonk()
        {
            UntitledGooseAPI.Log("Goose Honked");
        }
    }
}

我如何才能訂閱ExampleMod.Class1.OnGooseHonkOnGooseHonkEvent.OnGooseHonkEvent 它必須通過程序集模塊完成,因為我正在以編程方式從目錄加載所有程序集。

我可能對OnGooseHonkEvent類的設置方式有些困惑。 將委托更改為可以在對象上調用的方法,並將 OnGooseHonkedEvent 設置為Eventhandler<EventArgs>而不是event ,我得到了這個:

public class OnGooseHonkEvent
{
    // Calling this will notify every event subscriber the goose has honked
    public void HonkTheGoose()
    {
        OnGooseHonkedEvent?.Invoke(this, EventArgs.Empty);
    }

    public static event EventHandler<EventArgs> OnGooseHonkedEvent;
}

public class Class1
{
    public Class1()
    {
        OnGooseHonkEvent.OnGooseHonkedEvent += OnGooseHonk;
    }

    public void OnGooseHonk(object sender, EventArgs e)
    {
        UntitledGooseAPI.Log("When any instance of OnGooseHonkEvent calls the HonkTheGoose() method, this should get fired");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM