CA1009:正確宣告事件處理常式
型別名稱 |
DeclareEventHandlersCorrectly |
CheckId |
CA1009 |
分類 |
Microsoft.Design |
中斷變更 |
中斷 |
原因
處理公用或保護之事件的委派沒有正確的簽章、傳回型別或參數名稱。
規則描述
事件處理常式方法會採用兩個參數。 第一個參數的型別為 System.Object 且名稱為 'sender'。 這是引發事件的物件。 第二個參數的型別為 System.EventArgs 且名稱為 'e'。 這是與事件相關聯的資料。 例如,若開啟檔案時即會引發事件,則事件資料通常會包含檔案名稱。
事件處理常式方法不應傳回值。 在 C# 程式語言中,這是由傳回型別 void 所表示。 事件處理常式可在多個物件中叫用多個方法。 如果允許方法傳回值,則每個事件會產生多個傳回值,而且只能使用最後叫用之方法的值。
如何修正違規
若要修正此規則的違規情形,請更正委派的簽章、傳回型別或參數名稱。 如需詳細資訊,請參閱下列範例。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例會顯示適合處理事件的委派。 這個事件處理常式可叫用的方法符合在設計方針中所指定的簽章。 AlarmEventHandler 委派的型別名稱。 AlarmEventArgs 衍生自事件資料的基底類別 EventArgs,並保留警示事件資料。
Imports System
Namespace DesignLibrary
Public Delegate Sub AlarmEventHandler(sender As Object, e As AlarmEventArgs)
Public Class AlarmEventArgs
Inherits EventArgs
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class AlarmEventArgs : EventArgs {}
public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
}
using namespace System;
namespace DesignLibrary
{
public ref class AlarmEventArgs : public EventArgs {};
public delegate void AlarmEventHandler(
Object^ sender, AlarmEventArgs^ e);
}