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
.