Я использую систему плагинов в приложении ASP.NET MVC, над которым я работаю (слабо на основе реализации проекта витрины MVC Роба Коннери).
В дополнение к выполнению методов плагинов я также хочу разрешитьклассы для предоставления различных перехватчиков событий, на которые плагин может подписаться.
Я публикую свои события так:
#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.");
}
Это хороший и надежный способ публикации и подписки на эти события?
Любые мысли или предложения приветствуются.
Спасибо, Бен