C# 如何声明事件处理程序以传递FxCop规则,特别是关于包含发送方和e?

C# 如何声明事件处理程序以传递FxCop规则,特别是关于包含发送方和e?,c#,asp.net,fxcop,C#,Asp.net,Fxcop,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) { NewEn

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);
}
使用控件的页中的代码

protected override void OnInit(EventArgs e)
{
EntitySearch1.NewEntity += EntitySearch1_NewEntity;
//etc.
}
但是FxCop说:

按照约定,.NET事件有两个参数指定事件发送者和事件数据。事件处理程序签名应遵循以下形式:void MyEventHandler(对象发送方,EventArgs e)。“sender”参数的类型始终为System.Object,即使可以使用更具体的类型。“e”参数的类型始终为System.EventArgs。不提供事件数据的事件应使用System.EventHandler委托类型。事件处理程序返回void,以便可以将每个事件发送到多个目标方法。目标返回的任何值都将在
第一次调用。

在我看来是假的,'e'参数当然不总是
EventArgs
;它只是传统上从
EventArgs
派生的一种类型

ImageClickEventArgs
源于
EventArgs
,所以我觉得这很好。我怀疑FxCop比它应该严格一点。

,FxCop希望您指定EventHandler