FxCop 抱怨我有一个事件处理程序声明。尽管多次阅读警告,但我看不出代码有什么问题。
我的用户控件中的代码
//This next line Fx Cops doesn't like.
public event ImageClickEventHandler NewEntity; //A thingy defined in the BCL
private void ImgBtnAdd_Click(object sender, ImageClickEventArgs e)
{
NewEntity(sender, e);
}
Page 中使用控件的代码
protected override void OnInit(EventArgs e)
{
EntitySearch1.NewEntity += EntitySearch1_NewEntity;
//etc.
}
但 FxCop 说:
按照惯例,.NET 事件有两个参数来指定事件发送者和事件数据。事件处理程序签名应遵循以下形式:void MyEventHandler(object sender, EventArgs e)。'sender' 参数始终是 System.Object 类型,即使可以使用更具体的类型。“e”参数始终是 System.EventArgs 类型。不提供事件数据的事件应使用 System.EventHandler 委托类型。事件处理程序返回 void,以便它们可以将每个事件发送到多个目标方法。目标返回的任何值在第一次调用后都会丢失。