Позвольте мне представить этот вопрос на примере:
У нас есть класс UserNotification.Имеется информация об уведомлении, возможных пользовательских настройках.
public class UserNotification
{
// Event fired on notification broadcast
public event EventHandler<NotifyEventArgs> Notification;
public string Title { get; set; }
public string Description { get; set; }
public List<NotificationResults> Options { get; set; }
// ...
// This function is called to raise notification
public void Notify()
{
if (Notification != null) Notification(null, new NotifyEventArgs());
}
}
Итак, у нас есть куча уведомлений.Каждый раз, когда какая-то часть программы должна выдать уведомление (для пользователя), она берет некоторый объект уведомления и вызывает метод Notify ().Затем запускается событие Notification, и все слушатели могут обработать это уведомление (отобразить его где-нибудь в графическом интерфейсе, показать диалоговое окно и т.И слушатели уведомлений, скорее всего, хотели бы перечислить их всех.Итак, следующее, что приходит на ум, - это NotificationManager.Он имеет коллекцию событий UserNotification и NotificationRaised, которая запускается, когда любое из зарегистрированных уведомлений запускает событие Notification
public class NotificationManager
{
public event EventHandler NotificationRaised;
private List<UserNotification> _notifications;
public void AddNotification(UserNotification notification)
{
_notifications.Add(notification);
notification.Notification += () =>
{
if (NotificationRaised != null) NotificationRaised(???, ???)
};
}
И здесь возникает вопрос.Посмотрите на NotificationRaised (???, someEventArgs) .На этом этапе нам нужно передать указатель на исходное уведомление, чтобы слушатель мог работать с этим конкретным уведомлением.В обработчике событий NotificationManager есть поле 'source', которое выглядит именно так, как нам нужно ... Вопрос:
Правильно ли указывать указатель Notification в качестве источника?Или по замыслу и по каким-то веским причинам источник ДОЛЖЕН быть объектом, запускающим событие?
Другими словами, если посмотреть на пример, будет ли это «как и предполагалось»?