Language: C# | Type: CODE_SMELL | Severity: Major
Tags: event, pitfall
When raising an event, two arguments are expected by the EventHandler delegate: Sender and event-data. There are three guidelines
regarding these parameters:
null as the sender when raising a non-static event.null as the sender when raising a static event.null as the event-data. If no data should be passed, then EventArgs.Empty should be used.This rule raises an issue when any of these guidelines is not met.
using System;
namespace MyLibrary
{
class Foo
{
public event EventHandler ThresholdReached;
protected virtual void OnThresholdReached(EventArgs e)
{
ThresholdReached?.Invoke(null, e); // Noncompliant
}
}
}
using System;
namespace MyLibrary
{
class Foo
{
public event EventHandler ThresholdReached;
protected virtual void OnThresholdReached(EventArgs e)
{
ThresholdReached?.Invoke(this, e);
}
}
}