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, чтобы они могли отправлять каждое событие нескольким целевым методам. Любое значение, возвращаемое целью, будет потеряно после
первый звонок.