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イベントには、イベント送信者とイベントデータを指定する2つのパラメーターがあります。イベントハンドラの署名は、次の形式に従う必要があります:void MyEventHandler(object sender、EventArgs e)。より具体的なタイプを使用できる場合でも、「sender」パラメーターは常にSystem.Objectタイプです。'e'パラメータは常にSystem.EventArgsタイプです。イベントデータを提供しないイベントは、System.EventHandlerデリゲート型を使用する必要があります。イベントハンドラはvoidを返すため、各イベントを複数のターゲットメソッドに送信できます。ターゲットから返された値は、最初の呼び出し後に失われます。