== Why is this an issue? Since .Net Framework version 2.0 it is not necessary to declare a delegate that specifies a class derived from ``++System.EventArgs++``. The ``++System.EventHandler++`` delegate mechanism should be used instead as it allows any class derived from ``++EventArgs++`` to be used with that handler. This rule raises an issue when an old style delegate is used as an event handler. === Noncompliant code example [source,text] ---- public class MyEventArgs : EventArgs { } public delegate void MyEventHandler(object sender, MyEventArgs e); // Noncompliant public class EventProducer { public event MyEventHandler MyEvent; protected virtual void OnMyEvent(MyEventArgs e) { if (MyEvent != null) { MyEvent(e); } } } public class EventConsumer { public EventConsumer(EventProducer producer) { producer.MyEvent += HandleEvent; } private void HandleEvent(object sender, MyEventArgs e) { // Do something... } } ---- === Compliant solution [source,text] ---- public class MyEventArgs : EventArgs { } public class EventProducer { public event EventHandler MyEvent; protected virtual void OnMyEvent(MyEventArgs e) { if (MyEvent != null) { MyEvent(e); } } } public class EventConsumer { public EventConsumer(EventProducer producer) { producer.MyEvent += HandleEvent; } private void HandleEvent(object sender, MyEventArgs e) { // Do something... } } ----