Я использую систему плагинов в приложении ASP.NET MVC, над которым я работаю (свободно основанный на реализации проекта витрины 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
отлично, спасибо. Увидели эту статью, но пропустили точку зрения о состоянии гонки. –