Не рекомендуется изменять EventArgs в обработчиках событий для передачи информации обратно в класс, вызывающий событие?
Например, если у меня есть класс связи низкого уровня, требующий проверки сертификата для SSL, но у него нет способа узнать, как выглядит действительный сертификат, поскольку это знание разных пользователей этого класса.
class ValidationEventArgs : System.EventArgs
{
public X509Certificate Certificate { get; set; }
public bool Valid { get; set; }
}
Затем в используемых объектах они подключаются к событию и проверяют его как-то изменяя флаг Valid
, чтобы указать, является ли сертификат приемлемым или нет.
comms.ValidationEvent += CertValidationHandler;
void CertValidationHandler(ValidationEventArgs args)
{
if (args.Certificate.Issuer.Contains(COMPANY_NAME)
args.Valid = true;
}
Я нашел ссылки из EventArgs, которые используются таким образом, но я также видел, что люди говорят, что это не рекомендуется.
Изменить: Возможно, мне следует пояснить, что речь идет не о наследовании EventArgs, а о том, как использовать двунаправленный канал связи. Как отмечают другие, это приемлемо, и любой шум, который Google подбирает к противоположному, вероятно, просто люди, которые неправильно поняли/использовали концепцию и теперь имеют тот же личный крестовый поход, что и goto
.