2
我正在使用一個ASP.NET MVC應用程序的插件系統(鬆散地基於Rob Connery的MVC店面項目實現)。C#發佈靜態事件
除了執行插件方法,我還希望允許類提供插件可以訂閱的各種事件掛鉤。
我出版我的事件,像這樣:
#region Events
public static event ItemAddedEventHandler ItemAdded;
internal virtual void OnItemAdded(EventArgs e)
{
if (ItemAdded != null)
ItemAdded(this, new EventArgs());
}
public static event LineRemovedEventHandler LineRemoved;
internal virtual void OnLineRemoved(EventArgs e)
{
if (LineRemoved != null)
LineRemoved(this, new EventArgs());
}
#endregion
public delegate void ItemAddedEventHandler(object sender, EventArgs e);
public delegate void LineRemovedEventHandler(object sender, EventArgs e);
和示例插件:
public EventHooks() {
Cart.ItemAdded += new Cart.ItemAddedEventHandler(Cart_ItemAdded);
Cart.LineRemoved += new Cart.LineRemovedEventHandler(Cart_LineRemoved);
}
void Cart_ItemAdded(object sender, EventArgs e) {
_loggerService.Info("An item was added to the cart.");
}
void Cart_LineRemoved(object sender, EventArgs e) {
_loggerService.Info("A line was removed from the cart.");
}
這是出版的一個很好的和線程安全的方式和訂閱這些事件?
任何想法或建議表示讚賞。
感謝 本
我只是好奇心,因爲我想學習一些東西,爲什麼這有什麼不同或更好?你可以更新你的答案,包括爲什麼? – jsmith
當然,對不起。 – ziya
太好了,謝謝你。看過這篇文章,但錯過了關於競爭條件的觀點。 –