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
太好了,谢谢你。看过这篇文章,但错过了关于竞争条件的观点。 –