[英]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.OnGooseHonk
到OnGooseHonkEvent.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.