在事件处理程序中修改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
,而是使用它们作为双向通信的方式。如其他评论所述,这是可以接受的,任何对此持反对意见的言论都可能只是人们对概念的误解或滥用,就像现在有些人对 goto
一样。
CancelEventArgs
;没有比这更基础的了。 - Cody Gray