== Why is this an issue?

Delegate event handlers (i.e. delegates used as type of an event) should have a very specific signature:

* Return type ``++void++``.
* First argument of type ``++System.Object++`` and named 'sender'.
* Second argument of type ``++System.EventArgs++`` (or any derived type) and is named 'e'.

This rule raises an issue whenever a ``++delegate++`` declaration doesn't match that signature.


=== Noncompliant code example

[source,text]
----
public delegate void AlarmEventHandler(object s);

public class Foo
{
    public event AlarmEventHandler AlarmEvent; // Noncompliant
}
----


=== Compliant solution

[source,text]
----
public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);

public class Foo
{
    public event AlarmEventHandler AlarmEvent; // Compliant
}
----


== Resources

https://msdn.microsoft.com/en-us/library/edzehd2t.aspx[Handling and Raising Events]

