2009-04-23 6 views
2

FxCopは、私が持っているイベントハンドラの宣言について不平を言っています。警告を何度も読んでいるにもかかわらず、コードに何が間違っているかわかりません。イベントハンドラがFxCopルールを渡すように宣言する方法、特に送信者とeを含める方法について教えてください。

制御

protected override void OnInit(EventArgs e) 
{ 
EntitySearch1.NewEntity += EntitySearch1_NewEntity; 
//etc. 
} 

を使用しています。しかし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); 
} 

コードページで:規約により

、.NETイベントを指定する2つのパラメータを持っていますイベント送信者およびイベントデータ。イベントハンドラのシグネチャは、次の形式にする必要があります。void MyEventHandler(オブジェクト送信者、EventArgs e)。より特定の型を使用することができたとしても、 'sender'パラメータは常にSystem.Object型です。 'e'パラメーターは常にSystem.EventArgs型です。イベントデータを提供しないイベントは、System.EventHandlerデリゲート型を使用する必要があります。イベントハンドラは、各イベントを複数のターゲットメソッドに送信できるようにvoidを返します。ターゲットによって返された値は、最初の呼び出しである の後に失われます。

答えて

2

私に偽って見える - 'e'パラメータは確かにではない常にEventArgs;ちょうど慣習的にEventArgsに由来するタイプのです。

ImageClickEventArgsEventArgsから派生しているので、これは私にはうまく見えます。私はFxCopがそれより少し厳しいと思う。

関連する問題